Informatikunterricht

am Gymnasium Kirchenfeld

Benutzer-Werkzeuge

Webseiten-Werkzeuge


digitalelektronik:seven-segment-hello

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
digitalelektronik:seven-segment-hello [2015/03/05 09:17] – angelegt rosdigitalelektronik:seven-segment-hello [2020/10/13 14:25] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== "Hello" auf einer Siebensegmentanzeige ======+====== "HELLO" auf einer Siebensegmentanzeige ====== 
 + 
 +Dieses Programm stellt nacheinander die Buchstaben "HELLO" auf einer Siebensegmentanzeige dar. 
 + 
 +Die Siebensegmentanzeige wird 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   | 
  
 <code c++> <code c++>
-const int DELAY_MS = 1000+const int DELAY_MS = 500
-const int PIN[] = { 9, 8, 7, 6, 5, 4, 3, 2 }; +const int SEGMENT_PIN[] = { 8, 7, 6, 5, 4, 3, 2 }; 
-const int PIN_COUNT 8;+const int SEGMENT_PIN_COUNT 7;
 const byte CHARACTER[] = { const byte CHARACTER[] = {
 +//    abcdefg
     B00110111, // H     B00110111, // H
     B01001111, // E     B01001111, // E
Zeile 13: Zeile 28:
     B00000000, // Leerzeichen     B00000000, // Leerzeichen
 }; };
-const int CHARACTER_COUNT = 5;+const int CHARACTER_COUNT = 6;
  
 byte number; byte number;
Zeile 19: Zeile 34:
 void setup() { void setup() {
     int i = 0;     int i = 0;
-    while (i < PIN_COUNT) { +    while (i < SEGMENT_PIN_COUNT) { 
-        pinMode(PIN[i], OUTPUT);+        pinMode(SEGMENT_PIN[i], OUTPUT);
         i = i + 1;         i = i + 1;
     }     }
Zeile 29: Zeile 44:
 void showByte(byte b) { void showByte(byte b) {
     byte i = 0;     byte i = 0;
-    byte mask = 1; +    while (i < SEGMENT_PIN_COUNT) { 
-    while (i < 8) { +        if ((b & (1 << i)) != 0) { 
-        if ((b & mask) != 0) { +            digitalWrite(SEGMENT_PIN[i], HIGH);
-            digitalWrite(PIN[i], HIGH);+
         }         }
         else {         else {
-            digitalWrite(PIN[i], LOW);+            digitalWrite(SEGMENT_PIN[i], LOW);
         }         }
  
         i = i + 1;         i = i + 1;
-        mask = mask << 1; 
     }     }
 } }
Zeile 50: Zeile 63:
     }     }
  
 +    // Kurz alle Segmente ausschalten
     delay(DELAY_MS);     delay(DELAY_MS);
     showByte(0);     showByte(0);
digitalelektronik/seven-segment-hello.1425543435.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)