Created
May 23, 2017 18:00
-
-
Save pudelosha/21dbeb0fd3e48bc20d34120c1e4631dd to your computer and use it in GitHub Desktop.
Two multiplexers CD74HC4067 analog digital control
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Multiplexer control pins | |
#define s0 D0 | |
#define s1 D1 | |
#define s2 D2 | |
#define s3 D3 | |
#define s4 D4 | |
#define s5 D5 | |
#define s6 D6 | |
#define s7 D7 | |
#define analog_pin 0 | |
#define digital_pin D8 | |
void setup(){ | |
pinMode(s0, OUTPUT); | |
pinMode(s1, OUTPUT); | |
pinMode(s2, OUTPUT); | |
pinMode(s3, OUTPUT); | |
pinMode(s4, OUTPUT); | |
pinMode(s5, OUTPUT); | |
pinMode(s6, OUTPUT); | |
pinMode(s7, OUTPUT); | |
pinMode(digital_pin, OUTPUT); | |
digitalWrite(s0, LOW); | |
digitalWrite(s1, LOW); | |
digitalWrite(s2, LOW); | |
digitalWrite(s3, LOW); | |
digitalWrite(s4, LOW); | |
digitalWrite(s5, LOW); | |
digitalWrite(s6, LOW); | |
digitalWrite(s7, LOW); | |
Serial.begin(9600); | |
} | |
void loop(){ | |
bool actionDone = false; | |
delay(5000); | |
if (actionDone == false) { | |
for(int i = 0; i < 4; i ++){ | |
SwitchChannel(i, 1); // switch digital(1) channel | |
digitalWrite(digital_pin, LOW); | |
delay(20000); | |
digitalWrite(digital_pin, HIGH); | |
delay(1000); | |
} | |
actionDone = true; | |
} | |
} | |
void SwitchChannel(int channelNo, int multiplexerNo) { | |
int controlPinsDigital[] = {s0, s1, s2, s3}; | |
int controlPinsAnalog[] = {s4, s5, s6, s7}; | |
int mpxChannel[16][4]={ | |
{0,0,0,0}, //channel 0 | |
{1,0,0,0}, //channel 1 | |
{0,1,0,0}, //channel 2 | |
{1,1,0,0}, //channel 3 | |
{0,0,1,0}, //channel 4 | |
{1,0,1,0}, //channel 5 | |
{0,1,1,0}, //channel 6 | |
{1,1,1,0}, //channel 7 | |
{0,0,0,1}, //channel 8 | |
{1,0,0,1}, //channel 9 | |
{0,1,0,1}, //channel 10 | |
{1,1,0,1}, //channel 11 | |
{0,0,1,1}, //channel 12 | |
{1,0,1,1}, //channel 13 | |
{0,1,1,1}, //channel 14 | |
{1,1,1,1} //channel 15 | |
}; | |
switch (multiplexerNo) { | |
case 1: | |
for(int i = 0; i < 4; i ++){ | |
digitalWrite(controlPinsDigital[i], mpxChannel[channelNo][i]); | |
} | |
break; | |
case 2: | |
for(int i = 0; i < 4; i ++){ | |
digitalWrite(controlPinsAnalog[i], mpxChannel[channelNo][i]); | |
} | |
break; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment