Menu
CoddyTech

Odliczanie do zera

Część sekcji Wyświetlacze i czujniki ścieżki Arduino w Coddy. Lekcja 4 z 24.

Podobnie jak przy płynnym ruchu serwomechanizmu, pętla for może odliczać w dół: zacznij od dużej wartości, kontynuuj, gdy liczba wynosi 0 lub więcej, i za każdym razem odejmij jeden za pomocą n--:

for (int n = 5; n >= 0; n--) {
  showDigit(n);
  delay(1000);
}

Wyświetla to kolejno 5, 4, 3, 2, 1 i 0. Przy n > 0 odliczanie zatrzymałoby się na 1 i nigdy nie wyświetliłoby 0.

Odliczanie powinno odbyć się raz, a nie wciąż od nowa. Kod w setup() uruchamia się raz, więc umieść tam odliczanie, a po nim to, co ma się wydarzyć przy 0. loop() może pozostać puste, a 0 pozostanie na wyświetlaczu.

challenge icon

Wyzwanie

Łatwy

Buzzer jest podłączony do pinu 9. Przygotuj odliczanie przed startem:

  • w setup() odliczaj od 5 do 0, po jednej liczbie na sekundę
  • przy 0 uruchom buzzer za pomocą tone(buzzerPin, 880, 1000)
  • pozostaw 0 na wyświetlaczu

Naciśnij Run, a następnie Check.

Spróbuj swoich sił

const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8};  // a, b, c, d, e, f, g

// Jeden wzorzec na cyfrę, odczytywany od prawej: ostatni bit odpowiada segmentowi a.
//                     gfedcba
const byte digits[10] = {
  0b0111111,  // 0
  0b0000110,  // 1
  0b1011011,  // 2
  0b1001111,  // 3
  0b1100110,  // 4
  0b1101101,  // 5
  0b1111101,  // 6
  0b0000111,  // 7
  0b1111111,  // 8
  0b1101111   // 9
};

void showDigit(int n) {
  for (int i = 0; i < 7; i++) {
    if (bitRead(digits[n], i) == 1) {
      digitalWrite(segmentPins[i], LOW);   // świeci
    } else {
      digitalWrite(segmentPins[i], HIGH);  // zgaszony
    }
  }
}

const int buzzerPin = 9;

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }

  // odlicz tutaj od 5 do 0, a następnie uruchom brzęczyk
}

void loop() {
}
quiz iconSprawdź się

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

Wszystkie lekcje w sekcji Wyświetlacze i czujniki

Poćwicz samodzielnie: Edytor online Arduino