![]() |
![]() |
![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Input Multiplexer (Eingänge vervielfachen)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. |
|
![]() Letzte Aktualisierung: © boxtec internet appliances · the better security products |