int CS1 = 3;
int CS2 = 2;
int CS3 = 4;
int CS4 = 5;
int s0 = 6;
int s1 = 7;
int s2 = 8;
int s3 = 9;
byte Data[64]
const int Sig[4] = {14,12,10,11};
int s=0;
void setup()
{
pinMode(s0,OUTPUT);
pinMode(s1,OUTPUT);
pinMode(s2,OUTPUT);
pinMode(s3,OUTPUT);
digitalWrite(s0, LOW);
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
pinMode(CS1,OUTPUT);
digitalWrite(CS1,1);
pinMode(CS2,OUTPUT);
digitalWrite(CS2,1);
pinMode(CS3,OUTPUT);
digitalWrite(CS3,1);
pinMode(CS4,OUTPUT);
digitalWrite(CS4,1);
pinMode(10,INPUT);
pinMode(11,INPUT);
pinMode(12,INPUT);
pinMode(14,INPUT);
Serial.begin(9600);
}
void loop()
{
lectura();
for(int x=0; x<64; x++)
{
Serial.write(Data[x]);
//Serial.print(" ");
}
Serial.println();
delay(100);
}
void lectura()
{
selMux(1);///////////////////////////////////////
for(int i = 0; i < 8; i ++)
{
Data[0] = Data[0]<<1;
Data[0] = Data[0] + readMux(i);
}
for(int i = 8; i < 16; i ++)
{
Data[1] = Data[1]<<1;
Data[1] = Data[1] + readMux(i);
}
selMux(2);///////////////////////////////////////
for(int i = 0; i < 8; i ++)
{
Data[2] = Data[2]<<1;
Data[2] = Data[2] + readMux(i);
}
for(int i = 8; i < 16; i ++)
{
Data[3] = Data[3]<<1;
Data[3] = Data[3] + readMux(i);
}
selMux(3);///////////////////////////////////////
for(int i = 0; i < 8; i ++)
{
Data[4] = Data[4]<<1;
Data[4] = Data[4] + readMux(i);
}
for(int i = 0; i < 16; i ++)
{
Data[5] = Data[5]<<1;
Data[5] = Data[5] + readMux(i);
}
selMux(4);///////////////////////////////////////
for(int i = 0; i < 8; i++)
{
Data[6] = Data[6]<<1;
Data[6] = Data[6] + readMux(i);
}
for(int i = 8; i < 16; i++)
{
Data[7] = Data[7]<<1;
Data[7] = Data[7] + readMux(i);
}
}
int readMux(int channel)/////////////////////////////////////////////////////////7
{
int controlPin[] = {s0, s1, s2, s3};
int muxChannel[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
};
for(int j = 0; j < 4; j++)
{
digitalWrite(controlPin[j], muxChannel[channel][j]);
}
bool val = digitalRead(Sig[s]);
Serial.print(val,DEC);
delay(100);
return val;
}
int selMux(int mux)//////////////////////////////////////////////////////////7
{
digitalWrite(CS1,1);
digitalWrite(CS2,1);
digitalWrite(CS3,1);
digitalWrite(CS4,1);
if(mux==1){digitalWrite(CS1,0);s=0;}
if(mux==2){digitalWrite(CS2,0);s=1;}
if(mux==3){digitalWrite(CS3,0);s=2;}
if(mux==4){digitalWrite(CS4,0);s=3;}
}
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067