Ich arbeite an einem Projekt, in dem ich eine Telefon-App verwende, die ich gebaut habe, um Googles Speech Recognizer zu verwenden, mein Telefon mit meinem Arduino über Bluetooth zu verbinden und dann, wenn ich ein Wort sage Wort, um es in einem LCD anzuzeigen.Arduino Serial empfängt falsche Daten
Die Telefon-App funktioniert gut, ohne Probleme. Das Problem liegt im Arduino-Code. Wenn ich sage das Wort hallo zum Beispiel der Arduino erhält ello. Ich weiß, dass es empfangen wird, weil ich auch den seriellen Monitor verwende, um die Daten auf meinem Computerbildschirm außer dem LCD anzuzeigen. Dann, nachdem Arduino den ersten Teil der Daten empfängt, wenn ich ein zweites Wort wie Welt Arduino senden empfängt elloorld. Es fehlt also nicht nur der erste Buchstabe des Wortes, sondern auch der serielle Port ist am Ende der Schleife nicht leer.
Ich habe versucht, mit data += c;
statt data.concat(c);
und der Unterschied ist, dass das zweite Wort nicht elloorld ist, und es ist nur elt
Hier ist mein Code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 9, 8, 7, 6, 5, 4, 3, 2);
char c;
String data = "";
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
}
void loop() {
lcd.clear(); //clean the lcd
lcd.home(); // set the cursor in the up left corner
while(Serial.available() > 0){
c = Serial.read();
data.concat(c);
}
if(data.length() > 0){
Serial.println(data);
}
lcd.print(data);
delay(3000);
data = "";
}
Wenn ich am Ende der Schleife versuche, die serielle Schnittstelle mit diesem Code zu reinigen:
while(Serial.available() > 0){
Serial.read();
}
Dann empfängt das Arduino überhaupt keine Daten.
Was ist, wenn Sie, dass Android SpeechToText zu Bluetooth Kniff entfernen und testen Sie es mit SerialMonitor? – datafiddler
Es ist für 3 Sekunden tot, bis Sie Daten löschen und von vorne beginnen. Ist das okay für dich? Gibt es einen Grund dafür? – datafiddler
Wenn ich das Bluetooth-Modul abziehe und den seriellen Monitor benutze, wird das ganze Wort angezeigt, aber am Ende wird 2 ΞΞ hinzugefügt. d. h. Hallo. – vamoirid