Geschrieben am

Multiple Multiplexer und Tests auf dem Breadboard – MIDI-Controller E18

18-midi-controller-multiple-4051-arduinoGleich mehrere 4051 Multiplexer lassen sich an einen Arduino anschließen. Auf dem Weg zu unserem eigenen selbst gebauten MIDI Controller gucken wir uns an wie das geht. Außerdem testen wir unsere Schaltung bevor wir alles zusammenlöten.

int controlChange = 176; // Control-Change auf MIDI Kanal 1

int potiWert[16];
int controllerWert[16];
int controllerWertAlt[16];

int i = 0;

int bit1 = 0;
int bit2 = 0;
int bit3 = 0;


void setup() {
 //Select-Pins 4051s
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT);
 pinMode(4, OUTPUT);
 
 Serial.begin(9600);
}


void loop() {
 for (i = 0; i <= 7; i++) {
 bit1 = bitRead(i,0);
 bit2 = bitRead(i,1);
 bit3 = bitRead(i,2);
 
 digitalWrite(2, bit1);
 digitalWrite(3, bit2);
 digitalWrite(4, bit3);
 
 potisAbfragen(i,A0);
 potisAbfragen(i+8,A1);
 }
}


void potisAbfragen(int zaehler, int analogPin) {
 potiWert[zaehler] = 0.2 * potiWert[zaehler] + 0.8 * analogRead(analogPin);
 controllerWert[zaehler] = map(potiWert[zaehler],0,1023,0,127);
 if (controllerWert[zaehler] != controllerWertAlt[zaehler]) {
 sendeMIDI(controlChange, (20+zaehler), controllerWert[zaehler]);
 controllerWertAlt[zaehler] = controllerWert[zaehler];
 }
}


void sendeMIDI(int statusByte, int dataByte1, int dataByte2) {
 Serial.write(statusByte);
 Serial.write(dataByte1);
 Serial.write(dataByte2);
}

2 Gedanken zu „Multiple Multiplexer und Tests auf dem Breadboard – MIDI-Controller E18

  1. Hallo, bin gerade dabei mithilfe deiner Videos mir einen MIDI-Controller zu bauen und habe eine Frage: da ich keinen arduino Mega besitze, habe ich zu wenig digitale Inputs. Jetzt habe ich gelesen, dass man den 4051 auch im Digitalbetrieb nutzen kann. Hast du damit Erfahrung? Ich habe nur herausfinden können, dass man die Spannung dann an einen anderen Pin anlegt, allerdings fehlt mir da die genaue Pinbelegung. Habe nichts vernünftiges im Internet gefunden. Ich hoffe du kannst mir da weiterhelfen. LG Patrick

  2. Hallo Götz,
    Herzlichen Dank für Deine Mühe mit den Videos. Echt toll gemacht !!
    Da ich mit einem Freund an einem ähnlichen Projekt arbeite, kam mir Deine MIDI-Video-Serie natürlich „gerade im richtigen Moment“. Durch Deine Anleitungen kam mir dann die Idee >> Wenn ich Potis und analoge Eingänge verwenden kann, dann muss das doch auch mit Tastern (für z.B. Menüsteuerung) gehen. Also 10x 1k Widerstände in Serie geschaltet, an jeden Verbindungspunkt der Widerstände einen Taster geschaltet, die anderen Anschlüsse der Taster alle zusammengeführt und diese Leitung dann z.B. an A1 des Arduino. Somit brauche ich, um bei diesem Beispiel zu bleiben, für 9 Taster nur einen einzigen analogen Port ! Das „obere“ Ende der Widerstandskette wird mit +5V verbunden, das „untere“ Ende mit GND. Somit fallen an jedem Widerstand 0,5V ab >> 1ster Widerstand = 0,5V, nächster 1V, nächster 1,5V usw. Diese Spannungen kann man in den digitalen Werten klar unterscheiden, die man mit analogRead am Arduino bekommt. Mit entsprechenden if-Abfragen kann man dann Programmverzweigungen für jeden Taster programmieren.

    Was hälst Du davon ?

    Ich hätte gerne ein Schaltbild (als PNG-Datei) angehängt, aber das geht hier nicht. Gerne stell ich Dir die Schaltung als Bild zur Verfügung, zur Verbreitung.

    LG Jürgen

Kommentar verfassen