#include <Arduino.h>
#define SIG 7
#define EN 6
const uint8_t controlPins[] = { 2, 3, 4 };
const uint8_t ledPins[] = { 8, 9, 10 };
void setup() {
// put your setup code here, to run once:
for (int i = 0; i < 4; ++i)
{
pinMode(controlPins[i], OUTPUT);
pinMode(ledPins[i], OUTPUT);
}
pinMode(EN, OUTPUT);
pinMode(SIG, INPUT_PULLUP);
digitalWrite(EN, 1);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
byte data;
for (byte i = 0; i < 8; i++) {
data = readMux(i) /* Reads from channel i (returns HIGH or LOW) */;
Serial.print("Push button at channel "); Serial.print(i + 1);
Serial.print(" is "); Serial.println(data == LOW ? "pressed" : "not pressed");
delay(50);
}
Serial.println();
delay(1500);
}
int readMux(int channel)
{
for(int i = 0; i < 3; i ++)
{
int b = channel >> i & 1;
digitalWrite(controlPins[i], b);
digitalWrite(ledPins[i], b);
delay(3);
// Serial.print(b);
// Serial.print(" ");
}
// Serial.println();
delay(100);
int val = digitalRead(SIG);
for(int i = 0; i < 3; i ++)
{
digitalWrite(controlPins[i], 0);
digitalWrite(ledPins[i], 0);
}
return val;
}
Loading
cd74hc4067
cd74hc4067