Buenas noches!!!
Antes de nada presentarme:
Mi nombre es Juankar y vivo en Murcia. Hace unos meses descubrí por casualidad Arduino y desde entonces dedico parte de mi escaso tiempo libre a "jugar" un poco con él
Al mismo tiempo he ido leyendo este foro y toda la documentación que voy encontrado en la web y aunque la mayor parte se escapa a mi comprensión (todo llegará espero...) me está sirviendo para ir aclarando conceptos básicos y aprendiendo poco a poco a modificar algún código que otro...
El caso es que hace unas semanas leí acerca del Multiplexor 74HC595 y me hice con un par de ellos.
He probado varios ejemplos que he encontrado en la red y todo funciona según lo previsto aunque a la hora de intentar entender el código para comprender realmente como funciona el multiplexor me han ido surgiendo algunas dudas. Algunas las he ido despejando a base de buscar-leer-buscar y otras a base de ir modificando el código original para ver que ocurría...
Uno de los ejemplos que he probado ha sido el de http://arduino.cc/es/Tutorial/ShiftOut que incluye el siguiente esquema:
El código incluido con el ejemplo dice que hace que cuente de 0 a 255 representando los números con los leds.
Como no entendía bien el funcionamiento del multiplexor he intentado modificar el código para que se enciendan los 8 leds de uno en uno y así poder ver que "patilla" era la que se activaba en cada momento y debido a que comando...
Después de muchos intentos y correcciones el código resultante ha sido (viéndolo ahora da un poco de vergüenza por lo pequeño que es y lo que me ha costado ...):
//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
void setup() {
//set pins to output so you can control the shift register
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
int x;
for (x=1; x <= 128; x=x*2)
{
// enciende el led 1
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, x);
digitalWrite(latchPin, HIGH);
delay(500);
}
}
... y aquí surge mi duda...
Resulta que el "orden" de salida es
Q0............ valor x = 1
Q1............ valor x = 2
Q2............ valor x = 4
Q3............ valor x = 8
Q4............ valor x = 16
Q5............ valor x = 32
Q6............ valor x = 64
Q7............ valor x =128
¿Esto es así siempre?
Quiero decir... ¿siempre que utilice un 74HC595 los valores de x dentro del comando shiftOut(dataPin, clockPin, MSBFIRST, x) son los mismos que he indicado antes (1,2,4,8, 16...)?
¿Y si añado un segundo multiplexor en "serie" las salidas de este último seguirán con la misma secuencia?
Si fuerais tan amables de aclarármelo os estaría muy agradecido.
Muchas gracias por anticipado!!!!
Juankar