// #define s0 7
// #define s1 6
// #define s2 5
// #define s3 4
// void set_number(int pin){
// digitalWrite(s0, bitRead(pin,0));
// digitalWrite(s1, bitRead(pin,1));
// digitalWrite(s2, bitRead(pin,2));
// digitalWrite(s3, bitRead(pin,3));
// }
// void setup() {
// // put your setup code here, to run once:
// for (int i = 3; i<=7; i++){
// pinMode(i, OUTPUT);
// }
// delay(1000);
// }
// void loop() {
// // put your main code here, to run repeatedly:
// //0-15
// for(int i=0;i<=15;i++){
// set_number(i);
// digitalWrite(3, HIGH);
// delay(1000);
// }
// }
// Define control pins
#define S0 7
#define S1 6
#define S2 5
#define S3 4
// Variable to store the potentiometer value
int potValue = 0;
void setup() {
// Set control pins as outputs
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(A0, INPUT);
// Start the serial communication
Serial.begin(9600);
}
void loop() {
// Part B
// Read the analog value from the selected channel
for(int i=1; i<=16; i++){
runner(i);
}
// Part C
// for(int j=0; j<=15;j++){
// selectChannel(j);
// }
}
// Part C
// Function to select the channel on the demultiplexer
void selectChannel(int channel) {
for(int k=0; k<=10; k++){
potValue = analogRead(A0);
digitalWrite(S0, bitRead(channel, 0));
digitalWrite(S1, bitRead(channel, 1));
digitalWrite(S2, bitRead(channel, 2));
digitalWrite(S3, bitRead(channel, 3));
Serial.print("Potentiometer value for pin ");
Serial.print(channel);
Serial.print(" is equal to : ");
Serial.println(potValue);
delay(500);
}
}
// Part C
// Void function that selectively read the potentiomter from 0-15 in order with a delay of 5s in between
void runner(int num){
switch(num){
case 1:
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 0: ");
Serial.println(potValue);
delay(500);
}
break;
case 2:
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 1: ");
Serial.println(potValue);
delay(500);
}
break;
case 3:
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 2: ");
Serial.println(potValue);
delay(500);
}
break;
case 4:
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 3: ");
Serial.println(potValue);
delay(500);
}
break;
case 5:
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 4: ");
Serial.println(potValue);
delay(500);
}
break;
case 6:
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 5: ");
Serial.println(potValue);
delay(500);
}
break;
case 7:
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 6: ");
Serial.println(potValue);
delay(500);
}
break;
case 8:
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 7: ");
Serial.println(potValue);
delay(500);
}
break;
case 9:
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 8: ");
Serial.println(potValue);
delay(500);
}
break;
case 10:
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 9: ");
Serial.println(potValue);
delay(500);
}
break;
case 11:
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 10: ");
Serial.println(potValue);
delay(500);
}
break;
case 12:
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 11: ");
Serial.println(potValue);
delay(500);
}
break;
case 13:
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 12: ");
Serial.println(potValue);
delay(500);
}
break;
case 14:
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 13: ");
Serial.println(potValue);
delay(500);
}
break;
case 15:
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 14: ");
Serial.println(potValue);
delay(500);
}
break;
case 16:
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
for(int j =0; j<=10; j++){
potValue = analogRead(A0);
Serial.print("Potentiometer value for pin 15: ");
Serial.println(potValue);
delay(500);
}
break;
}
}
Loading
cd74hc4067
cd74hc4067