Menu
CoddyTech

Szybkość migania z portu szeregowego

Część sekcji Wejścia ścieżki Arduino w Coddy. Lekcja 17 z 22.

Wpisz 250, a płytka otrzyma trzy znaki: '2', '5' i '0', a następnie znak nowej linii. Serial.parseInt() odczytuje cyfry i zamienia je na liczbę 250, zatrzymując się na pierwszym znaku, który nie jest cyfrą.

Jest jednak pewien haczyk: gdy nie pojawi się żadna cyfra, parseInt() czeka na nią do 1 sekundy, a następnie zwraca 0. Dzieje się tak po każdej wpisanej przez Ciebie liczbie: znak nowej linii, który ją zakończył, nadal czeka, więc Serial.available() ponownie jest większe od 0, a parseInt() nie znajduje żadnej cyfry, czeka sekundę i zwraca 0.

Dlatego traktuj 0 jako „nic przydatnego” i zachowuj poprzednią wartość:

if (Serial.available() > 0) {
  int n = Serial.parseInt();
  if (n > 0) {
    wait = n;
  }
}

Zauważysz, że dioda LED zatrzymuje się na sekundę po każdej wpisanej przez Ciebie liczbie: to parseInt() czeka.

challenge icon

Wyzwanie

Średni

Dioda LED na pinie 13 miga: świeci przez wait ms i gaśnie na wait ms, przy czym wait początkowo wynosi 500. Zmień szybkość za pomocą monitora portu szeregowego:

  • gdy dostępne są znaki, odczytaj liczbę za pomocą Serial.parseInt()
  • jeśli jest większa od 0, zapisz ją w wait

Naciśnij Run, wyślij 100 z monitora portu szeregowego, a następnie naciśnij Check.

Spróbuj swoich sił

const int ledPin = 13;

int wait = 500;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // gdy znaki czekają na odczyt, wczytaj liczbę do wait (jeśli jest większa od 0)
  digitalWrite(ledPin, HIGH);
  delay(wait);
  digitalWrite(ledPin, LOW);
  delay(wait);
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wejścia

Poćwicz samodzielnie: Edytor online Arduino