#include <Servo.h>
// MUX pins
int s0 = 12, s1 = 13, s2 = A1, s3 = A2;
int sig = A0;
// Servos
Servo s[10];
int servoPins[10] = {2,3,4,5,6,7,8,9,10,11};
void setup() {
Serial.begin(9600);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
for (int i = 0; i < 10; i++) {
s[i].attach(servoPins[i]);
}
}
// select mux channel
void select(int ch) {
digitalWrite(s0, ch & 1);
digitalWrite(s1, (ch >> 1) & 1);
digitalWrite(s2, (ch >> 2) & 1);
digitalWrite(s3, (ch >> 3) & 1);
}
void loop() {
for (int i = 0; i < 10; i++) {
select(i); // choose sensor
delayMicroseconds(50); // allow mux to settle
analogRead(sig); // Dummy read
int val = analogRead(sig); //read it
int angle = map(val, 0, 1023, 0, 180);
angle = constrain(angle, 0, 180);
s[i].write(angle); //move servo
Serial.print(val);
Serial.print(" ");
}
Serial.println();
delay(10);
}Loading
cd74hc4067
cd74hc4067