//
#include <light_CD74HC4067.h>
//MUXES !!! as entradas não usadas devem ser aterradas, senao interferem na leitura dos outros pinos !!!
#define nmux 1 // s0 s1 s2 s3: select pins
CD74HC4067 mux[nmux]={{8, 9, 10, 11}}; // create a new CD74HC4067 object with its four select lines - 8,9,10,11
byte muxen[nmux]={2}; //mux enable(LOW)/disable(HIGH) pins
int signal_pin[nmux] = {A0}; // Pin A0 - Connected to Sig pin of CD74HC4067
//ENCODERS
#define nenc 2 //number of encoders 0 1 2 3 4
int val[nenc][5]={{0,0,0,0,0},{0,0,0,0,0}}; //{aState[CLK pin], B[DT pin],SWclick,aLastState, counter}
//int val[nenc][5]={{1,1,1,1,1},{1,1,1,1,1}};
byte mostra; //mostra valores
int aLastState;
int aState;
int cont=0;
void setup() {
Serial.begin(9600);
for (byte i = 0; i < nmux; i++) {
pinMode(signal_pin[i], INPUT); // Set as input for reading through signal pin
pinMode(muxen[i], OUTPUT);
digitalWrite(muxen[i],HIGH);
}
for (byte i = 0; i < nenc; i++) {
val[i][3]=digitalRead(signal_pin[i]);
}
delay(10);
mostra=0;
aLastState=digitalRead(12);
}
void loop() {
for (byte i = 0; i < nenc; i++) { // loop through channels 0 - 15 //DIP Switches
for (byte m = 0; m < nmux; m++) { //loop through muxes
digitalWrite(muxen[m], LOW); //delay(1); //ativa mux
mux[m].channel(i); delay(1);
val[i][m] = analogRead(signal_pin[m]); // Read analog value
//if (val[i][m]>750){ val[i][m]=1;} //conversor ADC via software :-)
//else {val[i][m]= 0;}
if (val[i][m]>-1){ Serial.println(val[i][m]);}
digitalWrite(muxen[m], HIGH); delay(1); //desativa mux
} //fim leitura de um canal / 1 encoder
/*
digitalWrite(2, LOW); //ativa 1
mux[0].channel(i); delay(10);
aState=digitalRead(12);
digitalWrite(2, HIGH); //desativa 1
digitalWrite(3, LOW); //ativa 2
mux[1].channel(i); delay(10);
if (aState!=aLastState || aState==1){
mostra=1;
Serial.print('.');
if(digitalRead(13)!=aState){ cont++; }
else{ cont--; }
}else {mostra=0; }
aLastState = aState;
digitalWrite(3, HIGH); //desativa 2
*/
if (val[i][0]!=val[i][3] && val[i][0]==1){
mostra=1;
//Serial.print('.');
val[i][3] = val[i][0];
if(val[i][1]!=val[i][0]){ val[i][4]++; }
else{ val[i][4]--; }
}else {mostra=0; }
//val[i][3] = val[i][0];
if (mostra==1 ){
//Serial.println(aState);
Serial.print(" Channel "+String(i+1)+": "+String(val[i][0])); // Print value
Serial.print(", "+String(val[i][1])+", "+String(val[i][3])+", "+String(val[i][4]));
}
delay(50);
}
}Loading
cd74hc4067
cd74hc4067
Loading
cd74hc4067
cd74hc4067