Da man seine Projekte die man fertig gestellt hat auch zeigen soll, stelle ich meine IOErweiterrung kurz vor.
Man benötigt 3 Pins und eine Stromversorgung, und hat durch ein schieberegister 8 Weitere digitale Ausgänge.
Die einzelnen Elemente kann man hintereinander schalten und somit 8/16/24/32/… Weitere Pins erhalten, dabei werden weiterhin nur diew 3 Pins gebraucht.
Die Platine ist mit einem 74HC595D bestückt, welches ein Schiftregister ist.
Mein ArduinoCode zum testen zählt von 1 bis 255 binär und gibt dies am Port aus:
//Pin verbunden mit SH_CP des 74HC595
int shiftPin = 8;
//Pin verbunden mit ST_CP des 74HC595
int storePin = 9;
//Pin verbunden mit DS des 74HC595
int dataPin = 10;
int counter = 0;
// Binärer Counter von 0 bis 255.
// 1 = 000000001
// 2 = 000000010
// 3 = 000000011
// 4 = 000000100
// 5 = 000000101
// usw. Die LEDs zeigen alle Werte von 0 bis 255.
void setup() {
// Pins 8,9,10 auf Ausgabe stellen
Serial.begin(9600);
pinMode(storePin, OUTPUT);
pinMode(shiftPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop () {
digitalWrite(storePin, LOW);
shiftOut(dataPin, shiftPin, MSBFIRST, counter);
shiftOut(dataPin, shiftPin, MSBFIRST, counter);
digitalWrite(storePin, HIGH);
delay(500);
counter ++;
if (counter > 255) {
counter = 0;
}
}
Hierbei habe ich 2 hintereinander gesteckt um dies auch zu testen, deswegen ist das shiften doppelt.
Wenn interesse besteht stelle ich eine Lib zur verfügung, die mit set Port arbeitet, welches viel schneller funktioniert als digitalWrite.