Hallo, Das ist mein erstes Post hier in diesem Forum. Ich hoffe mir kann hier jemand helfen. Im Arduino Forum komme ich leider nicht weiter oder man kann mir bei meinem Problem nicht helfen. Ich habe den Arduino Uno mit einem 2x16 Display gekauft. Ich möchte das Board gern dazu verwenden sogenannte $GPWPL-Daten aus einem APRS Tracker zu lesen. APRS ist eine Amateurfunkanwendung und erlaubt das verfolgen eines gefahrenen Weges mittels APRS. Diese Daten kann man sich auf aprs.fi ansehen. Der Tracker liefert Daten im $GPWPL Format die wie folgt aussehen. $GPWPL,5029.19,N,00916.55,E,DB0WOF-10*6A Das ist allerdings nur ein Beispiel. Man kann theoretisch daraus die Position der empfangenen Station herauslesen und deren Rufzeichen. Für mich relevant ist allerdings im moment nur das Rufzeichen. Dieses kann mal mit Zahlen hinter dem Rufzeichen sein und auch ohne. Ich habe nun versucht mit dem Uno was zu machen aber ich komme nicht voran da ich leider wirklich von dessen Programmierung nichts verstehe. Ich möchte die Dinger aber verstehn lernen und hoffe nun hier als letzten Versuch auf Hilfe. Ich hab praktisch ein Beispiel aus der Arduino Software genommen um die seriellen Daten einzulesen. Das ging auch, zumindest zeigt das Display $GPWPL.... Allerdings nicht das Rufzeichen. Ich müsste nun irgendwie die Daten speichern und dann wieder auslesen und anzeigen... nur wie.? Ich kann gut mit dem Lötkolben umgehen aber programmieren ist ein Buch mit 7 Siegeln. Villeicht könnte mich jeamnd auf den rechten Weg bringen. Anbei mal noch der Code den ich angefangen hab zu fummeln. Leider macht er natürlich nicht alles.. Den Code schreiben habe ich mit der Arduino Software versucht, Lg Mario Hier nun der Kauderwelsch den ich versucht habe, ja ich weiß das da wohl auch Mist bei ist :-) #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); void setup(){ // set up the LCD's number of columns and rows: lcd.begin(16, 2); // initialize the serial communications: Serial.begin(4800); char input[40]; char current; int incount = 0; bool lineComplete = false; } void loop() { // when characters arrive over the serial port... if (Serial.available()) { // wait a bit for the entire message to arrive delay(100); // clear the screen lcd.clear(); // read all the available characters while (Serial.available() > 0) { // display each character to the LCD lcd.write(Serial.read()); } } } Nicht hauen, ich weiß wirklich nicht so recht weiter. Villeicht kann mir jemand auch ein gutes Buch zum Lernen empfehlen.
Mario G. schrieb: > Das ging auch, zumindest zeigt das Display > $GPWPL.... Allerdings nicht das Rufzeichen. In der loop() Funktion gibst du alles, was auf der seriellen Leitung reinkommt, auf das LCD aus. Das lässt mich vermuten, dass du das Rufzeichen eben nicht empfängst. Mario G. schrieb: > Ich müsste nun irgendwie die > Daten speichern und dann wieder auslesen und anzeigen... nur wie.? Indem du Variablen benutzt (und die richten Datentypen und Operationen). Da hilft dir ein Tutorial zu C/C++ bzw. zu Arduino. Hast du die Tutorials schon durchgeackert? http://arduino.cc/en/Tutorial/HomePage
Vergiss mal den ganzen Arduino Quatsch, da lernt man nix bei ;) Kauf dirn C Buch und les das durch, danach lieste hier das AVR-GCC Tut und dann gehts los.
Hallo, Na ich seh schon, das werd ich wohl so schnell nicht verstehen. Wird zwar nicht einfach, aber mir bleibt wohl nichts übrig als mich dort alleine durchzufuxxen. Danke Mario
Hallo Mario, eigentlich ganz einfach: Zum Üben ist der Weg schon richtig, erstmal alle Zeichen die über die Schnittstelle reinkommen auf dem Display auszugeben um zu sehen ob man einen vollständigen String empfängt. Im nächsten Schritt dann alle Zeichen zwischen '$' und CR/LF (das übliche Ende dieser Zeichenketten) in ein Array reinschreiben. Dann die gespeicherte Zeichenkette zerlegen (das ',' ist der Feldtrenner). Dann das gewünschte Feld ausgeben. Allerdingst solltest du dich intensiv mit der Zeichenverarbeitung unter C bzw. Arduino auseinandersetzen. Gruß Heinzel
Hallo Heinzel Danke für Deine Antwort. Na dann komme ich doch wenigstens mal zu was. Ich hab im moment irgendwie das Problem das ich zwar was im Display sehe aber eben nicht den kompletten String. Ich denke das er einfach zu lang ist um auf ein 2 Zeiliges Display zu passen. Es sind ja nur 2x 16 Zeichen. Das Buch zum Arduino habe ich jedenfalls erst einmal bestellt. Für mich sind die Dinger völliges Neuland. Mit meinen Ü 40 begreift man auch manches nicht mehr so schnell, bin ich doch noch mit herkömmlichen Bauteilen groß geworden. Allerdings haben mich einige Internetseiten dazu animiert mal so ein Board zu kaufen und mit ihm was zu machen. Ich melde mich nochmals wenn ich mein Buch bekommen habe. Ich bin mir eigentlich sicher das ich mit der Hilfe des Buches einiges besser verstehe. Lg
Neben dem Problem, dass du eine Nachricht mit mehr als 16 Zeichen selbst auf zwei Zeilen aufteilen musst, gibt es evtl. noch ein Problem: Während du mit
1 | delay(100); |
auf die komplette Nachricht wartest, trudeln die Zeichen zwar ein und werden automatisch in einen Zwischenspeicher geschrieben. Wenn der aber zu klein ist, gehen auch Zeichen verloren. D.h. du musst eventuell weniger warten und dafür mit Teilnachrichten umgehen können.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.