====== 7-Segment-Anzeige from Scratch ====== Ein mittlerer Pin wird über ein 220$\Omega$-Widerstand mit GND verbunden. Acht Pins vom ESP32 werden mit den acht "äusseren" Pins der 7-Segment-Anzeige verbunden. Verwenden Sie Pin 13 bis 32 auf der "VIN"-Seite des ESP32 Nummerierung der Segmente: | oben | 0 | | oben rechts | 1 | | unten rechts | 2 | | unten | 3 | | links unten | 4 | | links oben | 5 | | mitte | 6 | | Punkt | 7 | Test: // Ordnen Sie die Pin-Nummern so, dass die LED in obiger Reihenfolge blinken. // Diese Ordnung hängt davon ab, wie die die LEDs angeschlossen haben. byte ledPins[] = {33, 32, 12, 14, 13, 25, 26, 27}; void setup() { Serial.begin(115200); for (int i=0; i<8; i++) { pinMode(ledPins[i], OUTPUT); } } void loop() { for (int i=0; i<8; i++) { digitalWrite(ledPins[i], HIGH); Serial.printf("[%d] GPIO %d\n", i, ledPins[i]); delay(1000); digitalWrite(ledPins[i], LOW); } } ====== Codierung der Ziffern als Bytes ====== Ein Byte hat 8 Bits, kann also darstellen, welche Segmente an und aus sein sollen. Daten können auch direkt binär angegeben werden. Vervollständigen Sie die Variable digits mit der Darstellung der restlichen Ziffern. byte ledPins[] = {33, 32, 12, 14, 13, 25, 26, 27}; byte digits[] = {0b00111111, 0b110}; void setup() { Serial.begin(115200); for (int i=0; i<8; i++) { pinMode(ledPins[i], OUTPUT); } } void showByte(byte b) { // 1 << i ist die Binärzahl 1, um i Stellen nach links verschoben, // d.h. jene Zahl, die genau an der Stelle i eine 1 hat. // // Diese Zahl wird bitweise UND gerechnet, d.h. es bleibt entweder Null // oder diese Zahl übrig. // Das Resultat kann direkt verwendet werden, wobei 0 als LOW und alles andere // als HIGH interpretiert wird. for (int i=0; i<8; i++) { digitalWrite(ledPins[i], (b & (1 << i))); } } void loop() { for (int j=0; j<4; j++) { for (int i=0; i<2; i++) { showByte(digits[i]); delay(200); } } for (int i=1; i<=256; i++) { showByte(i); delay(40); } } ===== Weitere Ideen ===== * Kleine Animationen auf der Anzeige * Verwendung eines Shift-Registers oder eines 7-Segment Decoders. * Weitere Displays.