Hallo zusammen,
ich habe folgender Code, der nicht so ganz funktioniert. Ich sende über
die Schnittstelle vom PC "DHTT" und bekomme keine Antwort zurück. Die
Ausgabe in der Methode loop bekomme ich, also "Testausgabe", aber
irgendwie gibt er gar nichts in der Methode Einlesen aus. Nicht das
"Echo: " und auch nicht den Beispielwert "xx.xx".
Würde mich über Hilfe freuen.
Gruß Florian
1
String Input=""; // Input von Serieller Schnittstelle
Florian D. schrieb:> Hallo zusammen,>> ich habe folgender Code, der nicht so ganz funktioniert. Ich sende über> die Schnittstelle vom PC "DHTT" und bekomme keine Antwort zurück. Die> Ausgabe in der Methode loop bekomme ich, also "Testausgabe", aber> irgendwie gibt er gar nichts in der Methode Einlesen aus. Nicht das> "Echo: " und auch nicht den Beispielwert "xx.xx".>
Hallo,
if (Serial.available()) Einlesen();
...
while (Serial.read());
{
char ch = Serial.read();
Semikolen wurde ja schon gesagt, außerdem rufst Du bei einem verfügbaren
Zeichen Einlesen() auf.
while (Serial.read());
Diese Zeile holt jetzt das Zeichen.
char ch = Serial.read();
Danach liest Du nochmal ein Zeichen, da dürfte aber keins mehr sein,
weil Du das ja oben schon gelesen hast.
Gruß aus Berlin
Michael
Hallo,
Ja das mit dem Semikolon ist nun klar.
Aber wie würdest du das dann anderst machen. Ich versteh schon was du
meinst aber ich wüsste jetzt nicht wie ich es ändern soll.
Gruß Florian
Als Arduino Fan möchte ich dazu auch mal was sagen:
1
while(Serial.available())
2
{
3
// tuwas
4
}
Ansonsten fummelst du da mit String Objekten rum.
Das bedeutet dauernde "dynamische Speicherverwaltung". Problematisch!
Der String Instanz kann man auch einmal einen Buffer zuweisen. Dann
lässt sie das sein.
Dieter S. schrieb:> Ich habe mir nicht den kompletten Sketch angesehen, aber Strings musst> du mit "strcmp" vergleichen, nicht mit "==".
Die String Klasse kann einiges....
https://www.arduino.cc/en/Reference/StringComparison
Mal 'ne ganz blöde Frage: Wozu gibt es in der Arduino IDE im Menü /Datei
den Menüpunkt Beispiele.
Vielleicht sollte man erstmal mit einem funktionierenden einfachen
Beispiel aus /04.Communication/ anfangen und das schrittweise in
Richtung der gewünschten Funktion umbauen. Damit lassen sich viele
grundlegende Fehler vermeiden.
Hallo,
ich habe es jetzt zum laufen gebracht, stehe jedoch jetzt vor einem
anderen Problem in dem Sketch. Ich will ein DS18S20 Sensor einbinden.
Jedoch bekomme ich folgendes angezeigt wenn ich es aufn Arduino
Hochladen will: "'show_temperature' was not declared in this scope".
Dies betrifft Zeile 62 im Code, diese wird rot markiert.
Ich will wenn ich nun OneWire01 an den Arduino sende eben die Temperatur
des Sensors ausgelesen und angezeigt bekommen.
1
#include <OneWire.h>
2
#include <DallasTemperature.h>
3
4
#define DS18B20_PIN 2
5
6
OneWire oneWire(DS18B20_PIN);
7
DallasTemperature sensors(&oneWire);
8
9
int BlinkRate=0; // Anzahl Blinken für Tests
10
String Input=""; // Input von Serieller Schnittstelle
11
String Befehl="NOP"; //Befehl aus Input
12
int Parameter=0; //Parameter aus Input
13
int Wert=0; //Rückgabewert Analog
14
15
char buffer[20] = ""; // Speicherbereich für Datenkonvertierung
Das ist was es bei mir anzeigt:
HANS:64: error: expected '}' before 'else'
else
^
exit status 1
'show_temperature' was not declared in this scope
Und was ist mit dem ersten gemeint, Habe doch ein } vor dem else
Zähl mal die Zahl der öffnenden geschweiften Klammern im IF-Teil und
dann die Zahl der ... aaah ;-)
{
sensors.requestTemperatures();
for(byte i=0;i<sensors.getDeviceCount();i++){
show_temperature(i+1,sensors.getTempCByIndex(i));
}
Florian D. schrieb:> Das ist was es bei mir anzeigt:
Tipp:
Wenn du 2 Fehlermeldungen bekommst, dann genau in dieser Reihenfolge
bearbeiten. Denn der 2te könnte ein Folgefehler sein, welcher nur auf
Grund des ersten Fehlers auftritt.
Hat jemand schon oft mit den Sensoren DS18S20 gearbeitet. Im oben
gesehen Code ist es ja so dass wenn ich OW01 an den Arduino sende dann
der Temperatursensor ausgelesen wird.
Man kann ja mehrere von denen an den gleichen Pin anschließen, das habe
ich ebenfalls schon gemacht (siehe Code oben, die werden ja nummeriert).
Nun möchte ich aber zum Beispiel bei "OW01" den einen Sensor, der sich
z.B. im Haus befindet auslesen und wenn ich Alternativ "OW02" an den
Arduino sende, den zweiten Auslesen, der z.B. draußen ist.
Kann mir da jemand helfen oder wie der ausgelesen wird?