Ich frage mich halt wieso nicht einfach den Code so kopiert hast wie er ist. Sondern anscheinend abgetippt und dabei Funktionsnamen falsch geschrieben und Zeilen vergessen
Durch das fehlende start = false hat er dann den Anfang nicht korrekt erkannt und alle Zeichen eingelesen. Also auch das nächste 'A'. Deshalb ging es beim ersten String (wo start noch false ist) und danach nicht mehr.
Ich will nicht einfach etwas kopieren, ich möchte daraus lernen deshalb. Aber das stimmt, hätte ich es kopiert, wäre mir der Fehler nicht passiert. Aber das stimmt also, ist doch kein Fehler mit dem A?
Ich integriere es in dem Code und teste es mal aus .
Der Fehler war weil du start nicht auf false gesetzt hast. Das hast du ja selbst gefunden. Und auf 'A' wird nur in dem Fall abgefragt. Schau dir mal deinen Screenshot an. Die erste Eingabe hat funktioniert. Danach nicht mehr. In #20 ging es dann.
Man könnte auf das Startzeichen auch verzichten. Nur ein Endzeichen reicht meistens aus.
So habe es jetzt getestet , an den XBEE welcher an dem Arduino FIO angeschlossen ist, doch leider kommen die Daten nicht an dem anderen Arduino an. Hab auch versucht das delay zu erhöhen doch keine chance
Hast du dir die Sache mit den seriellen Anschlüssen inzwischen mal angesehen? Wie ist das jetzt genau verkabelt?
Du kannst nicht auf einem UNO auf 0/1 ein externes Gerät anschließen und gleichzeitig Daten über USB zum PC schicken. Das ist die gleiche Schnittstelle!
Das XBee Modul hängt auch an 0/1. Hast du dann am PC ein XBee Modul? Oder hängst du über einen USB Adapter am PC?
Deshalb habe ich gesagt "genau". Es ist einfach nicht klar was du da tust.
Ansonsten wenn du da nichts doppelt belegst (und das XBee Modul korrekt arbeitet) muss es gehen. Das ist z.B. bei Bluetooth auch nicht anders.
Ich verweise da vor allem auf das:
HI danke für deine Antwort und für den Tipp, es geht darum, dass ich von einem Arduino Fio daten via XBEE an einem Anderen Arduino Sende und dazu verwende ich XBEE , die über Serial laufen und mein Arduino nur 1 Serial interface hat.
Das hat sich so angehört als ob du einen Arduino hast der sendet. Und einen der empängt. Diese Verbindung belegt aber die serielle Schnittstelle. Wie schickst du die Daten dann zum PC um zu sehen was du empfangen hast?
Also ich habe zwei Arduino Fio's und an beiden sind die XBEE über den vorgesehen SOckel angeschlossen.
Einen Arduino benutzte ich zum senden via XBEE der Sensordaten im Format AWert1;Wert2+ und der Andere Arduino soll diese anhand von XBee empfangen und über den FTDI-Adatper kann ich diese im Serial Monitor überprüfen. Problem ist, dass die Daten garnicht ankommen bzw nur vereinzelt und wollte fragen, was das sein könnte bzw woran es liegt?
Und wo ist der FTDI Adapter angeschlossen? Wenn der auch an Serial (0/1) hängt geht es nicht! Und so sieht es laut Code nämlich aus, da du einfach versuchst das Empfange mit Serial.print() zu drucken. Du kannst nicht zwei Geräte an die gleiche Schnittstelle hängen!
Du braucht SoftwareSerial oder besser gleich AltSoftSerial um dir eine weitere Schnittstelle in Software zu emulieren. Daran kannst du dann den FTDI hängen um mit dem PC zu kommunizieren.
Serial: RXI (D0) and TXO (D1). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the DOUT and DIN pins of the XBee modem socket.
Dann kannst du nicht an 0/1 noch was anderes hängen
Normal macht man es so dass man Serial für die Kommunikation zum PC nimmt und die Software Schnittstelle zum anderen Gerät. Hier musst du es umgekehrt machen, da der XBee Sockel eben fest verdrahtet ist.
Sorry für die blöde Frage: aber wenn ich doch den FTDI doch angeschlossen lasse, kann ich doch auch sehen was das XBEE empfängt oder nicht? Wie sollte ich das Serial jetzt ändern für die Serielle Schnittstelle? Bzw wie kann ich dann sehen was das Zigbee empfängt?
Ok d.h. welche Geräte Arduino und das XBEE? Weil Serial wird nur verwendet in meinem Fall um Daten von einem XBEE zu dem anderen XBEE zu senden bzw zu empfangen. Wie sollte ich da die Softwarelibrary verwenden?
Ich würde die Einleseroutine noch dahin ändern, dass wenn ein A vor dem erwarteten Endekennzeichen empfangen wird, alles verworfen wird und frisch angefangen wird. Dann werden defekte Daten direkt eliminiert.
milito:
Ok d.h. welche Geräte Arduino und das XBEE? Weil Serial wird nur verwendet in meinem Fall um Daten von einem XBEE zu dem anderen XBEE zu senden bzw zu empfangen. Wie sollte ich da die Softwarelibrary verwenden?
Die normale SoftwareSerial Library geht theoretisch auch, aber die ist nicht so zuverlässig. Du empfängst Daten vom XBee mit Serial und machst altSerial.print()/println() um sie an den PC zu senden.
ElEspanol:
Ich würde die Einleseroutine noch dahin ändern, dass wenn ein A vor dem erwarteten Endekennzeichen empfangen wird, alles verworfen wird und frisch angefangen wird. Dann werden defekte Daten direkt eliminiert.
Ja, kann man machen:
if(start && c == 'A')
{
index = 0;
}
Wie gesagt reicht ein Endzeichen bei sowas normal aus.
Ok , also angeschlossen ist die Sensorik richtig aber anscheinend liegt es an den Serial da ich ihn für das Empfagen und den Seriel Monitor verwende?
Alternativ könnte ich ja einen Leonardo nehmen als Coordinator da er mehrere Serials hat oder die Library nehmen für den Fio? --> d.h. ich müsste den FDTI dann nicht an RXI und TXO sondern dann jeweils an 8 und 9 welche ich dann im Code für AltSoftSerial einstellen muss?