1.8 Serielles Lesen

Überblick

Zusätzlich zum Lesen von Daten von den elektronischen Komponenten kann die Mega2560-Platine die Dateneingabe im Monitor der seriellen Schnittstelle lesen, und Sie können Serial.read() als Controller des Schaltungsexperiments verwenden. Dann verwenden wir LED, um mit dem Serial zu experimentieren. Read()-Anweisung zum Steuern der LED zum Ein- und Ausschalten.

Erforderliche Komponenten

../_images/list_1.8.png

Fritzing-Schaltung

In diesem Beispiel verwenden wir den digitalen Pin 9, um die LED anzusteuern. Wenn im seriellen Monitor eine 1 eingegeben wird, leuchtet die LED. Bei Eingabe von 0 erlischt die LED.

../_images/image30.png

Schematische Darstellung

../_images/image401.png

Code

Bemerkung

  • Sie können die Datei 1.8_serialRead.ino unter dem Pfad sunfounder_vincent_kit_for_arduino\code\1.8_serialRead direkt öffnen.

  • Oder kopieren Sie diesen Code in Arduino IDE.

Nachdem die Codes auf die Mega2560-Karte hochgeladen wurden, schalten Sie bitte den Monitor für die serielle Schnittstelle ein. Die Eingabe von „1“ kann die LED einschalten und die Eingabe von „0“ kann sie ausschalten.

../_images/image52.png

Code-Analyse

Deklarieren Sie den digitalen Pin 9 als ledPin.

const int ledPin = 9;

Serial.read() liest ein einzelnes Byte des ASCII-Werts, und daher müssen Sie eine Variable vom Typ int, incomingByte, deklarieren, um die erfassten Daten zu speichern.

int incomingByte = 0;

Führen Sie die serielle Kommunikation in setup() aus und stellen Sie die Datenrate auf 9600 ein.

Serial.begin(9600);

Stellen Sie ledPin auf OUTPUT-Modus.

pinMode(ledPin,OUTPUT);

Der Status des Monitors für die serielle Schnittstelle wird in loop() beurteilt, und die Informationsverarbeitung wird nur ausgeführt, wenn die Daten empfangen werden.

if (Serial.available() > 0){}

Liest den Eingabewert im Monitor für die serielle Schnittstelle und speichert ihn in der Variable eingehendesByte.

incomingByte = Serial.read();

Wenn das Zeichen „1“ erhalten wird, leuchtet die LED; wenn ‚0‘ erhalten wird, erlischt die LED.

if(incomingByte=='1'){digitalWrite(ledPin,HIGH);}
else if(incomingByte=='0'){digitalWrite(ledPin,LOW);}

Bemerkung

Serial.read() übernimmt den ASCII-Wert in einem einzelnen Zeichen, was bedeutet, dass bei Eingabe von „1“ der erhaltene Wert nicht die Zahl „1“ ist, sondern das Zeichen „1“, dessen entsprechender ASCII-Wert 49 ist.

※ Analog-Digital-Wandler

Die ASCII-Codierung (American Standard Code for Information Interchange) stammt aus den 1960er Jahren. Es ist die Standardmethode, mit der Text numerisch codiert wird.

Beachten Sie, dass die ersten 32 Zeichen (0-31) nicht druckbare Zeichen sind, die oft als Steuerzeichen bezeichnet werden. Die nützlicheren Zeichen wurden beschriftet.

../_images/image409.png ../_images/image410.png

Phänomen Bild

../_images/image36.jpeg