digitalelektronik:seven-segment-temperature
Dies ist eine alte Version des Dokuments!
Temperaturanzeige
Dieses Programm stellt die Temperatur in Grad Celsius 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 TEMP_DELAY_MS = 1000; 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; byte tempC; unsigned long nextReadTemp; 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 readTemp() { unsigned long now = millis(); if (now > nextReadTemp) { int reading = analogRead(0); float millivolts = reading * 5.0 / 1024.0; tempC = 25 + (millivolts - 0.75) * 100; nextReadTemp = now + TEMP_DELAY_MS; } } 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() { readTemp(); // Display 0 einschalten (LOW), 1 ausschalten (HIGH) digitalWrite(DISPLAY_PIN[0], LOW); digitalWrite(DISPLAY_PIN[1], HIGH); showByte(DIGIT[tempC % 10]); delay(DELAY_MS); // Display 0 ausschalten (HIGH), 1 einschalten (LOW) digitalWrite(DISPLAY_PIN[0], HIGH); digitalWrite(DISPLAY_PIN[1], LOW); showByte(DIGIT[tempC / 10]); delay(DELAY_MS); }
digitalelektronik/seven-segment-temperature.1426694153.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)