arduino:matrix-multiplexing
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
arduino:matrix-multiplexing [2014/11/19 19:34] – angelegt ros | arduino:matrix-multiplexing [2014/12/03 07:48] (aktuell) – gelöscht ros | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== LED-Matrix: Multiplexing-Demo ====== | ||
- | |||
- | [[arduino: | ||
- | |||
- | Dieses Programm steuert eine 8x8 LED-Matrix über zwei in Serie geschaltete Schieberegister (74HC595). Das erste Schieberegister steuert die Spalten der Matrix, das zweite die Zeilen. In jedem Aufruf von '' | ||
- | |||
- | <code c++> | ||
- | #define DATA_PIN 0 | ||
- | #define SHIFT_CLOCK_PIN 1 | ||
- | #define STORAGE_CLOCK_PIN 2 | ||
- | |||
- | const byte PATTERN[] = { | ||
- | B01111110, | ||
- | B10000001, | ||
- | B10101001, | ||
- | B10000001, | ||
- | B10000101, | ||
- | B10111001, | ||
- | B10000001, | ||
- | B01111110 | ||
- | }; | ||
- | |||
- | const byte DELAY[] = {200, 100, 20, 10, 2, 1}; | ||
- | const byte DELAY_SIZE = sizeof(DELAY) / sizeof(byte); | ||
- | |||
- | byte row = 0; | ||
- | byte delayIndex = 0; | ||
- | unsigned long changeTime; | ||
- | |||
- | void showRow(byte row, byte col) { | ||
- | digitalWrite(STORAGE_CLOCK_PIN, | ||
- | shiftOut(DATA_PIN, | ||
- | shiftOut(DATA_PIN, | ||
- | digitalWrite(STORAGE_CLOCK_PIN, | ||
- | } | ||
- | |||
- | void setup() { | ||
- | pinMode(DATA_PIN, | ||
- | pinMode(SHIFT_CLOCK_PIN, | ||
- | pinMode(STORAGE_CLOCK_PIN, | ||
- | changeTime = millis() + 5000; | ||
- | } | ||
- | |||
- | void loop() { | ||
- | showRow(row, | ||
- | row = (row + 1) % 8; | ||
- | delay(DELAY[delayIndex]); | ||
- | |||
- | if (millis() >= changeTime && delayIndex < DELAY_SIZE-1) { | ||
- | delayIndex = delayIndex + 1; | ||
- | changeTime = millis() + 5000; | ||
- | } | ||
- | } | ||
- | </ | ||
arduino/matrix-multiplexing.1416422098.txt.gz · Zuletzt geändert: 2020/10/13 14:25 (Externe Bearbeitung)