Ziffernmuster in Bytes
Teil des Abschnitts Displays und Sensoren der Arduino-Journey von Coddy. Lektion 2 von 24.
Sieben digitalWrite()-Zeilen für jede Ziffer sind eine Menge Code. Speichere jede Ziffer als Muster: ein Bit pro Segment, 1 für an und 0 für aus.
Ein byte ist eine ganze Zahl von 0 bis 255, die aus acht Bits besteht. Schreibe sie binär mit vorangestelltem 0b. Lies die Bits von rechts: Das letzte Bit ist Segment a, das davor b und so weiter bis g.
// gfedcba
byte one = 0b0000110; // b und c: eine 1Zehn Muster passen in ein Array, daher ist digits[3] das Muster einer 3. bitRead() aus dem Binärzähler liest eines der Bits daraus, von rechts gezählt und beginnend bei 0:
bitRead(0b0000110, 0) // 0: Segment a ist aus
bitRead(0b0000110, 1) // 1: Segment b leuchtetEine Funktion kann die sieben Bits mit einer for-Schleife durchgehen und jeden Segment-Pin setzen, sodass das Zeichnen einer beliebigen Ziffer ein einziger Aufruf ist: showDigit(7);
Aufgabe
MittelIm Starter fehlen alle Muster außer 4 und 7, und loop() zeigt 1, 4 und 7 an.
- ergänze 4 (Segmente
b,c,f,g) und 7 (a,b,c) - schreibe
showDigit(n): Setze für jedesivon 0 bis 6segmentPins[i]aufLOW, wenn Bitivondigits[n]1 ist, und aufHIGH, wenn es 0 ist
Drücke Run und dann Check.
Probier es selbst
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // a, b, c, d, e, f, g
// Ein Muster pro Ziffer, von rechts gelesen: Das letzte Bit entspricht Segment a.
// gfedcba
const byte digits[10] = {
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b0000000, // 4: ergänzen
0b1101101, // 5
0b1111101, // 6
0b0000000, // 7: ergänzen
0b1111111, // 8
0b1101111 // 9
};
void showDigit(int n) {
// Schalte die Segmente von digits[n] ein und die anderen aus
}
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);
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Displays und Sensoren
1Sieben-Segment-Anzeigen
Sieben-Segment-AnzeigeZiffernmuster in BytesZählen auf der AnzeigeCountdown bis nullWürfel-SimulatorÜbe selbstständig: Arduino-Playground