Wzory cyfr w bajtach
Część sekcji Wyświetlacze i czujniki ścieżki Arduino w Coddy. Lekcja 2 z 24.
Siedem wierszy digitalWrite() dla każdej cyfry to dużo kodu. Zapisz każdą cyfrę jako wzorzec: jeden bit odpowiada segmentowi, 1 oznacza, że segment świeci, a 0, że jest wyłączony.
byte to liczba całkowita od 0 do 255, składająca się z ośmiu bitów. Zapisz ją w systemie binarnym, dodając z przodu 0b. Odczytuj bity od prawej strony: ostatni bit to segment a, poprzedni to b i tak dalej, aż do g.
// gfedcba
byte one = 0b0000110; // b i c: 1W tablicy zmieści się dziesięć wzorców, więc digits[3] to wzorzec cyfry 3. bitRead(), znana z licznika binarnego, odczytuje jeden bit wzorca, licząc od prawej strony i zaczynając od 0:
bitRead(0b0000110, 0) // 0: segment a jest wyłączony
bitRead(0b0000110, 1) // 1: segment b jest zapalonyFunkcja może przejść przez siedem bitów za pomocą pętli for i ustawić każdy pin segmentu, dzięki czemu narysowanie dowolnej cyfry wymaga jednego wywołania: showDigit(7);
Wyzwanie
ŚredniW kodzie początkowym są wszystkie wzory oprócz 4 i 7, a loop() wyświetla 1, 4 i 7.
- uzupełnij wzory dla 4 (segmenty
b,c,f,g) i 7 (a,b,c) - napisz
showDigit(n): dla każdegoiod 0 do 6 ustawsegmentPins[i]naLOW, gdy bitiwdigits[n]ma wartość 1, a naHIGH, gdy ma wartość 0
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
0b0000000, // 4: uzupełnij
0b1101101, // 5
0b1111101, // 6
0b0000000, // 7: uzupełnij
0b1111111, // 8
0b1101111 // 9
};
void showDigit(int n) {
// zapal segmenty wskazane przez digits[n], a pozostałe zgaś
}
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
showDigit(1);
delay(1000);
showDigit(4);
delay(1000);
showDigit(7);
delay(1000);
}
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