Blinkgeschwindigkeit über die serielle Schnittstelle
Teil des Abschnitts Eingaben der Arduino-Journey von Coddy. Lektion 17 von 22.
Gib 250 ein, und das Board empfängt drei Zeichen, '2', '5' und '0', gefolgt von einem Zeilenumbruch. Serial.parseInt() liest Ziffern und wandelt sie in die Zahl 250 um. Dabei stoppt die Funktion beim ersten Zeichen, das keine Ziffer ist.
Das hat einen Haken: Wenn keine Ziffer ankommt, wartet parseInt() bis zu 1 Sekunde darauf und gibt dann 0 zurück. Das passiert nach jeder Zahl, die du eingibst: Der Zeilenumbruch, der die Zahl beendet hat, wartet noch, also ist Serial.available() wieder größer als 0, und parseInt() findet keine Ziffer, wartet eine Sekunde und gibt 0 zurück.
Behandle 0 also als „nichts Brauchbares“ und behalte den alten Wert bei:
if (Serial.available() > 0) {
int n = Serial.parseInt();
if (n > 0) {
wait = n;
}
}Du wirst sehen, dass die LED nach jeder eingegebenen Zahl eine Sekunde lang pausiert: Das ist parseInt(), das wartet.
Aufgabe
MittelDie LED an Pin 13 blinkt, ist wait ms lang an und wait ms lang aus, wobei wait mit 500 beginnt. Ändere die Geschwindigkeit über den Seriellen Monitor:
- wenn Zeichen warten, lies eine Zahl mit
Serial.parseInt() - wenn sie größer als 0 ist, speichere sie in
wait
Drücke Run, sende 100 über den Seriellen Monitor und drücke dann Check.
Probier es selbst
const int ledPin = 13;
int wait = 500;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Wenn Zeichen zum Einlesen bereitstehen, lies eine Zahl in wait ein (falls sie größer als 0 ist)
digitalWrite(ledPin, HIGH);
delay(wait);
digitalWrite(ledPin, LOW);
delay(wait);
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Eingaben
3Serielle Eingabe
Ein serielles Zeichen lesenWortbefehleBlinkgeschwindigkeit über die serielle SchnittstelleAuf Befehl blinkenÜbe selbstständig: Arduino-Playground