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.
Wyzwanie
ŁatwyBuzzer 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() {
}
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
1Wyświetlacze siedmiosegmentowe
Wyświetlacz siedmiosegmentowyWzory cyfr w bajtachLiczenie na wyświetlaczuOdliczanie do zeraSymulator rzutu kostkąPoćwicz samodzielnie: Edytor online Arduino