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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg2-2020:7segment-display [2020/08/24 10:21]
Ivo Blöchliger created
lehrkraefte:blc:informatik:ffprg2-2020:7segment-display [2020/08/24 10:46] (current)
Ivo Blöchliger [Codierung der Ziffern als Bytes]
Line 18: Line 18:
 // Ordnen Sie die Pin-Nummern so, dass die LED in obiger Reihenfolge blinken. // 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. // Diese Ordnung hängt davon ab, wie die die LEDs angeschlossen haben.
-byte ledPins[] = {33, 32, 12, 14, 13, 25, 26, 27} ;+byte ledPins[] = {33, 32, 12, 14, 13, 25, 26, 27};
  
 void setup() { void setup() {
Line 36: Line 36:
 } }
 </code> </code>
 +
 +====== 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.
 +
 +<code c++>
 +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);
 +  }
 +}
 +</code>
 +
 +===== Weitere Ideen =====
 +  * Kleine Animationen auf der Anzeige
 +  * Verwendung eines Shift-Registers oder eines 7-Segment Decoders.
 +  * Weitere Displays.
 +
  • lehrkraefte/blc/informatik/ffprg2-2020/7segment-display.1598257312.txt.gz
  • Last modified: 2020/08/24 10:21
  • by Ivo Blöchliger