Eine 7-Segment-Anzeige ist ein aus sieben Teilen bestehendes Anzeigegerät, das hauptsächlich zur Anzeige von Zahlen dient. Ein LCD-Display eignet sich besser zur Anzeige von Buchstaben. Diese Art von Anzeige wird häufig in Taschenrechnern und Weckern verwendet.
Wie der Name schon sagt, besteht die 7-Segment-Anzeige aus sieben einzelnen Segmenten. Jedes Segment stellt einen Teil der Anzeige dar, der durch Leuchten zur Bildung einer Zahl beiträgt. Je nachdem, welche Segmente aktiviert werden, können unterschiedliche Zahlen angezeigt werden. Mit dieser Anzeigeart ist es möglich, die Zahlen 1 bis 9 anzuzeigen. Die 7-Segment-Anzeige verwendet eine 8-Bit-Kodierung.
Hier der Schaltplan für die 7-Segment-Anzeige:
const uint8_t digits[] = {
0b11000000, // 0
0b11111001, // 1
0b10100100, // 2
0b10110000, // 3
0b10011001, // 4
0b10010010, // 5
0b10000010, // 6
0b11111000, // 7
0b10000000, // 8
0b10011000, // 9
};
const uint8_t segment_pins[] = {2, 3, 4, 5, 6, 7, 8};
const uint8_t digit_pins[] = {10, 11, 12, 13};
void setup() {
Serial.begin(115200);
Serial.println("Afficheur 7 segments sans PIO");
for (int i = 0; i < 7; i++) {
pinMode(segment_pins[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(digit_pins[i], OUTPUT);
}
}
void displayDigit(uint8_t digit, uint8_t position) {
for (int i = 0; i < 7; i++) {
digitalWrite(segment_pins[i], (digits[digit] >> i) & 0x01);
}
for (int i = 0; i < 4; i++) {
digitalWrite(digit_pins[i], (i == position) ? LOW : HIGH);
}
}
void displayNumber(uint16_t number) {
for (int i = 0; i < 4; i++) {
displayDigit(number / pow(10, 3 - i) % 10, i);
delay(5);
}
}
int i = 0;
void loop() {
displayNumber(i++);
if (i > 9999) i = 0;
delay(200);
}