Nummer über seriell an arduino senden etwas anderes senden?

1328
Derp

Ich habe ein Arduino-Setup, das ein Licht einschaltet, wenn es eine 1 empfängt, und ein Licht ausschaltet, wenn es eine 0 empfängt. Ich glaube nicht, dass mit dem Code etwas nicht stimmt. Ich kann dem Arduino eine 1 schicken echo 1 > /dev/ttyACM0und das Licht blinkt, was mich verwirrt. Dann schickte ich es 'h' und es tat dasselbe. Ich öffnete sogar einen Bildschirm mit screen /dev/ttyACM0und tippte 1 ein, und es blinzelte. Ich würde denken, Echo 1 würde Echo 1 sein. Ich habe auch den folgenden Befehl verwendet. stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts Mache ich hier etwas falsch? Wenn Sie weitere Informationen benötigen, fragen Sie einfach.

Arduino-Code (ich glaube nicht, dass das fehlerhaft ist):

void setup() { Serial.begin(9600); //set the LED pin to OUTPUT pinMode(13, OUTPUT); }  void loop() { //wait until the serial connection is open while (Serial.available() ==0);  //read from the serial connection; the - '0' is to cast the values as the int and not the ASCII code int val = Serial.read() - '0';  //print to the console for testing Serial.println(val);  //if we've recieved a '1', turn on the LED and print a message if(val==1){ Serial.println("Received a 1"); digitalWrite(13, HIGH); } //if we've recieved a '0', turn off the LED and print a message if(val==0){ Serial.println("Received a 0"); digitalWrite(13, LOW); } } 
1
Dies kann außerhalb des Bereichs von Superuser liegen. Bitte beachten Sie, dass dies möglicherweise nicht beantwortet wird. Ich weiß, dass die Ardunio-Betaversion wegen Inaktivität geschlossen wurde. Ich würde mir überlegen, ob ich das verschieben möchte und dann [ask] 50-3 vor 10 Jahren 2
Es ist nicht wirklich eine Codierungsfrage. Es ist eher eine Befehlsfrage, die ich vielleicht nicht klar gestellt habe. Der einzige Grund, warum ich den Arduino-Code gepostet habe, war für jemanden, der sich für das interessierte Arduino interessierte, als ich ihm die 1 schickte. Ich habe ihn trotzdem repariert, ich werde hier gleich eine Antwort posten. Derp vor 10 Jahren 0
Wenn Sie es im Arduino-Programm ausführen und an der integrierten seriellen Konsole interagieren, funktioniert es und drucken Sie Ihre "Received a 1" -Nachrichten aus? Ich wäre zuerst der Methode des Sendens des seriellen Signals misstrauisch. (Ich habe auch den `Serial.available`-Test als` <= 0` anstelle von `== 0` geschrieben.) beroe vor 10 Jahren 0

1 Antwort auf die Frage

0
Rohan

Versuchen Sie zunächst, die LED zu blinken, ohne die Seriennummer lesen zu müssen. Wenn dies funktioniert, ist die Platine in Ordnung und die LED funktioniert. Versuchen Sie dann, ein Python-Skript zu verwenden, das pyserial verwendet, und schreiben Sie die Daten in den COM-Port. Es gibt Online-Tutorials, wie das geht. (Stellen Sie sicher, dass Sie den richtigen COM-Port verwenden, verwenden Sie den Befehl ls / dev / tty * [für Linux] im Terminal, um den richtigen COM-Port zu sehen.) Hoffe das klappt.