Fehlt zum Schluss noch der DIP Schalter, mit dem sich die Displaynummer ohne Programmänderung einstellen lässt. Ich habe mir einen 8-fach DIP Schalter besorgt und als Erstes festgestellt, dass ja „nur“ noch 6 digitale Eingänge am Arduino frei sind. Das heißt wir können mit den 6 DIP maximal 64 LCD Nummern konfigurieren (111 111 = 1+2+4+8+16+32 = 0 bis 63). Für meinen Fall reichen 64 LCD aber aus. Daher hier die Variante mit den 6 DIP-Schaltern. So sehen dazu ein paar Beispiele für die Displaynummer aus (0 = off, 1 = on)
0 = 000000 5 = 101000 23 =111010 62 = 011111 ... usw.
Zur Sicherheit ist jeder DIP Pin wieder mit einem Widerstand (hier 10kΩ) an GND angeschlossen. Bei meiner bisherigen Konfiguration hatte ich noch die digitalen Eingänge 6,7,8,9,10 und 13 am Arduino frei. Diese verbinde ich jeweils mit einem DIP. Von der anderen Seite kommt der Strom (5V), daher habe ich noch die 5V auf die andere Seite des Breadboards gelegt (rotes Kabel rechts).
Sie fertig dann so aus:
Kommen wir zum Programm (sketch), welcher hier heruntergeladen werden kann: Download Sketch zu Part 3
Und nun zu den Anmerkungen im Programm. Zuerst definieren wir uns sprechende Namen für unsere 6 PIN Anschlüsse.
#define DIP1 6 #define DIP2 7 #define DIP3 8 #define DIP4 9 #define DIP5 10 #define DIP6 13
pinMode (DIP1, INPUT); pinMode (DIP2, INPUT); pinMode (DIP3, INPUT); pinMode (DIP4, INPUT); pinMode (DIP5, INPUT); pinMode (DIP6, INPUT);
displayNumber = 0; displayNumber = displayNumber + (digitalRead(DIP1) * 1); displayNumber = displayNumber + (digitalRead(DIP2) * 2); displayNumber = displayNumber + (digitalRead(DIP3) * 4); displayNumber = displayNumber + (digitalRead(DIP4) * 8); displayNumber = displayNumber + (digitalRead(DIP5) * 16); displayNumber = displayNumber + (digitalRead(DIP6) * 32);
lcd.setCursor(0, 1); lcd.print("Display: "); lcd.print(displayNumber);
if (data[3] != displayNumber) { //Not the selected Display number return;}
Das war es. Viel Spaß beim Basteln und ich freue mich auch Fotos von umgesetzten Projekten.