Dieses Programm stellt nebeneinander die Ziffern 4 und 2 auf zwei Siebensegmentanzeigen dar. Die beiden Anzeigen werden mit Multiplexing angesteuert.
Die Anoden der Siebensegmentanzeigen werden wie folgt angeschlossen:
Segment | Pin | Bit |
---|---|---|
a | 8 | 6 |
b | 7 | 5 |
c | 6 | 4 |
d | 5 | 3 |
e | 4 | 2 |
f | 3 | 1 |
g | 2 | 0 |
Die Kathoden der Siebensegmentanzeigen werden wie folgt angeschlossen:
Anzeige | Pin | Stelle |
---|---|---|
0 | 9 | 1er |
1 | 10 | 10er |
const int DELAY_MS = 5; const int SEGMENT_PIN[] = { 8, 7, 6, 5, 4, 3, 2 }; const int SEGMENT_PIN_COUNT = 7; const int DISPLAY_PIN[] = { 9, 10 }; const int DISPLAY_PIN_COUNT = 2; const byte DIGIT[] = { // abcdefg B01111110, // 0 B00110000, // 1 B01101101, // 2 B01111001, // 3 B00110011, // 4 B01011011, // 5 B01011111, // 6 B01110000, // 7 B01111111, // 8 B01111011 // 9 }; const int DIGIT_COUNT = 10; void setup() { int i = 0; while (i < SEGMENT_PIN_COUNT) { pinMode(SEGMENT_PIN[i], OUTPUT); i = i + 1; } i = 0; while (i < DISPLAY_PIN_COUNT) { pinMode(DISPLAY_PIN[i], OUTPUT); i = i + 1; } } void showByte(byte b) { byte i = 0; while (i < SEGMENT_PIN_COUNT) { if ((b & (1 << i)) != 0) { digitalWrite(SEGMENT_PIN[i], HIGH); } else { digitalWrite(SEGMENT_PIN[i], LOW); } i = i + 1; } } void loop() { // Display 0 einschalten (LOW), 1 ausschalten (HIGH) digitalWrite(DISPLAY_PIN[0], LOW); digitalWrite(DISPLAY_PIN[1], HIGH); showByte(DIGIT[2]); delay(DELAY_MS); // Display 0 ausschalten (HIGH), 1 einschalten (LOW) digitalWrite(DISPLAY_PIN[0], HIGH); digitalWrite(DISPLAY_PIN[1], LOW); showByte(DIGIT[4]); delay(DELAY_MS); }