Hallo!
Ich möchte mit meinem Ultraschallsenor die Entfernung messen und
anschließend auf mein Touchscreen (DG16080) ausgeben.
Das klappte mit einem mega32 und einer anderen uart-bibliothek bereits,
doch mit dem neuen µC bin ich auch die Fleury library umgestiegen und
jetzt mags nichtmehr :)
Der Sensor funktioniert ganz einfach.
"Der Sensor sendet immer 9 ASCII-Bytes. Jede Sendung beginnt mit den
ASCII Steuercodes 0x0d (LF) und 0x0a (CR). Dann folgen die 5 ASCII-Bytes
mit den Daten und am Ende der Übertragung kommen noch einmal 0x0d (LF)
und 0x0a (CR)."
Ein Beispiel für die Ausgabe wäre dann:
„12000“ Sensor 1 soll die Entfernung messen und ausgeben
Ausgabe 1, leer, 1, 0, 7 107cm
Also ich sende ihm den String "12000" und er liefert dann eben den Wert
zurück. Soweit sogut. Hier mal die Sende und Empfangsfunktion:
1 | void Supersonic(void) //ultrasonic distance measuring
|
2 | {
|
3 | //Senden
|
4 | uart1_puts("12000");
|
5 |
|
6 | //Empfangen & Auswerten
|
7 | received=uart1_getc();
|
8 | while (i<=9)//Solange Empfangen bis die 9 Bytes angekommen sind
|
9 | {
|
10 | rec[i++]=received;
|
11 | received=uart1_getc();
|
12 | }
|
13 |
|
14 | wert=(rec[5]-'0')*10+(rec[6]-'0')+((rec[4]!=0x20)?(rec[4]-'0'):0)*100; // Empfangene Daten in Entfernung umrechnen
|
15 |
|
16 | char Buffer[20],f;
|
17 |
|
18 | itoa(wert,Buffer,10);
|
19 | f=g_draw_string(0,60,Buffer);
|
20 | g_draw_char(f,60,' ');
|
21 |
|
22 | }
|
Das Problem ist, dass ich bei der Ausgabe immer -5328 als Entfernung
angezeigt bekommen.
Ich hab versucht einzelne Zeichen auszugeben, jedoch bekam ich da immer
nur [ auf dem Display angezeigt.