Informatikunterricht

am Gymnasium Kirchenfeld

Benutzer-Werkzeuge

Webseiten-Werkzeuge


digitalelektronik:seven-segment-count

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
digitalelektronik:seven-segment-count [2015/02/17 09:28] – angelegt rosdigitalelektronik:seven-segment-count [2020/10/13 14:25] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 14: Zeile 14:
 | g       | 2   | 0   | | g       | 2   | 0   |
  
-Die Leuchtdioden werden an den Pins 9 (höchstes Bit) bis 2 (tiefstes Bit) angeschlossen  +<code c++>
- +
-<code>+
 const int DELAY_MS = 1000; const int DELAY_MS = 1000;
-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 sizeof(PIN) / sizeof(int);+const int SEGMENT_PIN_COUNT 7;
 const byte DIGIT[] = { const byte DIGIT[] = {
-    B01111110, B00110000, B01101101, B01111001, B00110011, B01011011, B01011111, B01110000, B01111111, B01111011+//    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 number; byte number;
Zeile 28: Zeile 37:
 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 36: Zeile 45:
 } }
  
-void loop() {+void showByte(byte b) {
     byte i = 0;     byte i = 0;
-    while (i < 8) { +    while (i < SEGMENT_PIN_COUNT) { 
-        if ((DIGIT[number] & (1 << i)) != 0) { +        if ((& (1 << i)) != 0) { 
-            digitalWrite(PIN[i], HIGH);+            digitalWrite(SEGMENT_PIN[i], HIGH);
         }         }
         else {         else {
-            digitalWrite(PIN[i], LOW);+            digitalWrite(SEGMENT_PIN[i], LOW);
         }         }
-        +
         i = i + 1;         i = i + 1;
 +    }
 +}
 +
 +void loop() {
 +    showByte(DIGIT[number]);
 +    number = number + 1;
 +    if (number >= DIGIT_COUNT) {
 +        number = 0;
     }     }
  
-    number = (number + 1) % 10; 
     delay(DELAY_MS);     delay(DELAY_MS);
 } }
 </code> </code>
digitalelektronik/seven-segment-count.1424161720.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)