/*Este esquema se convierte lee la entrada de serie y la usa para ajustar los pines
de un cambio de registro 74HC595.
* 74HC595 registro de desplazamiento conectado a los pines 2, 3 y 4 de la Arduino,
como se detalla a continuación.
*/
//Pin conectado a el (ST_CP) del 74HC595
const int latchPin = 8;
//Pin conectado al pin de reloj (SH_CP) del 74HC595
const int clockPin = 12;
////Pin conectado a dato de entrada (DS) del 74HC595
const int dataPin = 11;
void setup() {
//colocar los pines salida
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
Serial.begin(9600);
Serial.println("reiniciar");//lo utilizamos basicamente para tener
// informacion que el programa empezo
}
void loop() {
if (Serial.available() > 0) {
// ASCII '0 'al '9' son caracteres
// Representado por los 48 a 57.
// Por lo que si el usuario escribe un número del 0 al 9 en formato ASCII,
// Se puede restar 48 para obtener el valor real:
int bitToSet = Serial.read() -48;
Serial.println(bitToSet,DEC);
// Escribir en el registro de desplazamiento el bit correcto en alto:
EscribirRegistro(bitToSet, HIGH);
}
}
//Este método envía bits para el registro de desplazamiento:
void EscribirRegistro(int CualPin, int CualEstado) {
// Los bits que desea enviar
byte bitsToSend = 0;
// Desactivar la salida para que los pernos no se encienden
digitalWrite(latchPin, LOW);
//Activar el bit de próximo en bitsToSend:
bitWrite(bitsToSend, CualPin, CualEstado);
// desplazar los bits de salida:
shiftOut(dataPin, clockPin, MSBFIRST, bitsToSend);
// conectar la salida de modo que el LED se enciende:
digitalWrite(latchPin, HIGH);
}