Wenn zu wenig Eingänge am Arduino für die gewünschte Anwendung verfügbar sind dann hilft ein Input Multiplexer wie der CD4051 weiter. Das Bauteil ist sehr preiswert und erweitert erweitert einen Eingang auf 8 Eingänge.
Hier die Belegung vom CD4051 ( A,B,C bedeutet S0,S1,S3 )
Hier ein Testaufbau:
Beschaltung:
Arduino CD4051 2 = 11 (S0) 3 = 10 (S1) 4 = 9 (S2) A7 = 3 (In Out) GND = 6 (ING) GND = 7 (Vee) GND = 8 (Vss) 5V+ = 16 (Vdd)
Die maximal 8 Sensoren/Schalter/Poti können dann an den Channel I/O Pins angeschlossen werden.
Hier ein Tesprogramm welches auf der Seriellen Schnittstelle die jeweiligen Inputs ausgibt:
In meinem Beispielaufbau habe ich ein Poti als Sensor 1 und 3 Schalter als Sensoren 2-4.
Testprogramm:
/* Analog IN Multiplexer CD4051 Connections: Arduino CD4051 2 = 11 (S0) 3 = 10 (S1) 4 = 9 (S2) A7 = 3 (In Out) GND = 6 (ING) GND = 7 (Vee) GND = 8 (Vss) 5V+ = 16 (Vdd) */ // Setup const int analogInPin = A7; // Analog input pin from Multiplexer const int maxi = 8; //how many inputs from 4051 (maximum 8) const int s0Pin = 2; //Pin on Arduino connected to 4051 S0 const int s1Pin = 3; //Pin on Arduino connected to 4051 S1 const int s2Pin = 4; //Pin on Arduino connected to 4051 S2 // Variables int sensorValue = 0; // Sensor Value int r0 = 0; //value of select pin at the 4051 (s0) int r1 = 0; //value of select pin at the 4051 (s1) int r2 = 0; //value of select pin at the 4051 (s2) int count = 0; //which y pin we are selecting void setup(){ Serial.begin(9600); pinMode(s0Pin, OUTPUT); // s0 pinMode(s1Pin, OUTPUT); // s1 pinMode(s2Pin, OUTPUT); // s2 } void loop () { for (count=0; count<maxi; count++) { // determine the bits r0 = bitRead(count,0); r1 = bitRead(count,1); r2 = bitRead(count,2); // set S0,S1,S2 to 4051 digitalWrite(s0Pin, r0); digitalWrite(s1Pin, r1); digitalWrite(s2Pin, r2); // Read the values an output the result to serial Serial.print(" sensor " ); Serial.print(count + 1); Serial.print(" : " ); sensorValue = analogRead(analogInPin); Serial.print(sensorValue); } Serial.println(" "); }
Weitere Informationen:
* Playground Arduino erklährt auch wie 64 Eingänge auf einen Eingang zusammengelegt werden kann
Persönliches Fazit: Dieses Bauteil benötigt keine zusätzlichen Bauteile, das Coding ist sehr überschaubar und der Preis sehr niedrig. Dafür bietet es aber einen enorm grossen Mehrwert und kann sehr vielfältig eingesetzt werden.