Hola a todos,
estoy teniendo algunos problemas al leer desde un MUX digital, el 74hc151. Os paso mi codigo más abajo.
creo que puede ser algún tipo de problema con la temporización del strobe ¿alguien tiene un tutorial para leer desde un mux? (creo que massimo solo escribio el pseudocodigo hace tiempo para uno analogico)
de todas maneras no estaría mal depurarlo y ponerlo en tutorials
un abrazo a todos
Qq
//LECTURA DESDE UN MUX 74HC151 DE 8 INPUTS
//la entrada a arduino (salida del mux) es el pin 6
//los pines de seleccion son el 2,3 Y 4
//el strobe es el pin 5
//Enrique Tomas, Madrid, Junio 2006
//variables para el mux
int input = 6;
int strobe=5;
int c=4;
int b=3;
int a=2;
int val = {0,0,0,0,0,0,0,0}; // valores leidos de cada input del mux
//estados de los pines de seleccion
int c_bin={LOW,LOW,LOW,LOW,HIGH,HIGH,HIGH,HIGH};
int b_bin={LOW,LOW,HIGH,HIGH,LOW,LOW,HIGH,HIGH};
int a_bin={LOW,HIGH,LOW,HIGH,LOW,HIGH,LOW,HIGH};
//para almacenar los estados (por claridad)
int a_val=0;
int b_val=0;
int c_val=0;
//aux
int contador=0;
int entrada=0;
void setup() {
//declaramos los pines
pinMode(input, INPUT);
pinMode(strobe, OUTPUT);
pinMode(c, OUTPUT);
pinMode(b, OUTPUT);
pinMode(a, OUTPUT);
//y la utilizacion de comunicacion serie
beginSerial(19200);
}
void loop(){
for(entrada=0;entrada<=7;entrada++) {
//seleccionamos el estado de cada pin de seleccion para cada caso
a_val=a_bin[entrada];
b_val=b_bin[entrada];
c_val=c_bin[entrada];
//y escribimos su valor en el mux
digitalWrite(a,a_val);
digitalWrite(b,b_val);
digitalWrite(c,c_val);
//ponemos strobe a LOW para poder leer
digitalWrite(strobe,LOW);
//leemos el valor de salida del mux
val[entrada] = digitalRead(input);
//ponemos strobe a HIGH para buscar la siguiente entrada
//digitalWrite(strobe,LOW);
}
//escribimos con formato por el puerto serie
printByte(‘A’);
for(contador=0;contador<=7;contador++) {
printInteger(val[contador]);
delay(100);
}
printByte(10);
printByte(13);
delay(100);
}