Menu
CoddyTech

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.

challenge icon

Aufgabe

Mittel

Die 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);
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Eingaben

Übe selbstständig: Arduino-Playground