Hi. Bin noch ziemlicher Anfänger im Bereich Arduino.
Für ein kleines Projekt habe ich jetzt 2 Arduino-Nanos, auf jeweils einem Board mit XBee.
Nun möchte ich mehrere Werte (eigentlich erstmal nur zwei) über Funk übertragen. Dabei handelt es sich jeweils um eine gerade Zahl (von 0 - 200).
Mit diesem Code (den ich irgendwo im Netz gefunden habe) klappt es soweit ganz gut. Gesendet wird dabei zb. 10;50*
Mein Problem ist jetzt aber, dass sobald ich die Anzeige (also die lcd.print - Befehle) in einen anderen Programmabschnitt auslagere, das Ganze nicht mehr funktioniert.
Das benötige ich aber, da diese Werte nicht immer angezeigt werden sollen. Woran liegt das?
Und gibt es eine bessere/andere Variante mehrere Variablen gleichzeitig zu empfangen?
Hab leider nichts richtiges im Netz dazu gefunden…
Der übertragene String zb für die Werte 10 und 27 sieht so aus:
10;27*
Und wenn es nicht funktioniert, arbeitet das Ganze wie zeitverzögert.
Also erst 3-4 Übertragungen später kommt der nächste Wert.
Ich habe zum probieren mit einem Taster am Sender eine der beiden Werte hochgezählt, und bei jeder Änderung den String gesendet. Zb bei dem Wert 10 beginnend, kam nach ca 4 mal drücken nicht der Wert 14, sondern 11 am Ende raus. Und wieder paar mal später 12. Usw... Kann ich mir irgendwie nicht erklären. Zumal das mit dem ersteren Code oben funktioniert.
Weil ich da leider nicht so recht weiß, wie ich die dann trennen kann, bzw wie ich dem Empfänger mitteile, welcher der beiden Werte jetzt übertragen wird.
hmm, so richtig was auffallen tut mir auch nicht. kannst du bitte den code posten, wo du das lcd.print ausgelagert hast - oder ist der obrige code gemeint? dann bitte die variante, wo lcd.print "drin" ist, so dass wir uns die unterschiede angucken können
Vom Code an sich, würde ich anders vorgehen. Eine Routine, an die du einen kompletten String übergibst, der dann auf dem LCD ausgegeben wird. ist einfacher beim debuggen und universeller einsetzbar
Apropos Debuggen: Schon mal deine Variablen getraced? ich vermute irgendwo dort verbirgt sich das problem. auch die counter debuggen. da denkt man immer als letztes daran, dabei verbergen sich dort die meisten fehler.
Kompletter String ist halt schlecht, weil man da ja nur auf eine Zeile im LCD Display schreiben kann, oder?
Ich würde aber gern Wert1 auf eine, und Wert2 auf die nächste Zeile schreiben.
Variablen tracen? Sagt mir jetzt leider nix, aber ich werd mal danach googln…
Habs jetzt auch mal versucht mit Bytes übertragen - aber wenn ich da zwei Bytes hintereinander versuche zu senden, kommt leider auch nur Quatsch raus.
Vielen Dank für den Hinweis. Da hab ich das ja schon so ziemlich richtig abgeändert.
Aber warum bekomm ich die falschen Werte raus? Falsches Format?
Werden die empfangenen Zahlen als Byte empfangen, und so nicht richtig als Integer gelesen?
Aber müsste nicht auch der Empfang funktionieren, wenn ich die Werte einfach per Console sende?
Also wenn ich den Sender, und die XBees einfach weglasse, und mit dem Serial Monitor erst einen, dann den anderen sende,
dann müssten die doch folglich genauso empfangen werden.
Das funktioniert aber leider auch nicht. Ich bekomm immer nur Werte zwischen 40 und 60 raus.
Wandelt beim Senden die Werte in Text um. Sende das Ganze mal mit Serial.write(), das sendet einzelne Bytes. Siehe auch http://arduino.cc/en/Serial/Write