lehrkraefte:blc:informatik:ffprg2-2020:7segment-display

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);
  }
}
  • Kleine Animationen auf der Anzeige
  • Verwendung eines Shift-Registers oder eines 7-Segment Decoders.
  • Weitere Displays.
  • lehrkraefte/blc/informatik/ffprg2-2020/7segment-display.txt
  • Last modified: 2020/08/24 10:46
  • by Ivo Blöchliger