Midi LCD Part 3

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
In der Setup Funktion müssen wir festlegen, dass wir die 6 digitalen Eingänge als Eingabe (Input) verwenden.
pinMode (DIP1, INPUT);
pinMode (DIP2, INPUT);
pinMode (DIP3, INPUT);
pinMode (DIP4, INPUT);
pinMode (DIP5, INPUT);
pinMode (DIP6, INPUT);
Anschließend kann der Status (0 oder 1) der 6 Pin abgefragt und binär addiert werden.
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);
Damit haben wir unsere Display Nummer von 0 bis 63. Damit wir wissen, welche Displaynummer wir eingestellt haben, können wir diese ja noch auf unserem LCD in der zweiten Reihe ausgeben:
lcd.setCursor(0, 1);
lcd.print("Display: ");
lcd.print(displayNumber);
In unserer MyHandleSystemExclusive Funktion prüfen wir noch, ob wir das richtige Display bei der einkommenden Nachricht sind. Wenn nicht verlassen wir die Funktion einfach wieder.
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.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.