Differences
This shows you the differences between two versions of the page.
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: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ====== 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, | ||
+ | |||
+ | void setup() { | ||
+ | Serial.begin(115200); | ||
+ | for (int i=0; i<8; i++) { | ||
+ | pinMode(ledPins[i], | ||
+ | } | ||
+ | } | ||
+ | |||
+ | 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], | ||
+ | } | ||
+ | } | ||
+ | |||
+ | 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. | ||
+ |