sábado, 22 de agosto de 2015

Secuencia de LED con ARDUINO

Deberá mostrar secuencialmente (mediante 8 LED) el código binario natural de 8 bits con una secuencia de 500mS. Se deberá utilizar un bucle for() para aumentar el número, la función shiftOut() y un registro de desplazamiento. Además, indicara en el monitor serial, el numero decimal que está contando, siempre escribiendo en línea nueva.


/*Uso del registro de desplazamiento*/
//Pin 8 Arduino conectado al Pin 12 del 74HC595 (Latch)
int latchPin = 8;
//Pin 12 Arduino conectado al Pin 11 del 74HC595 (Clock)
int clockPin = 12;
//Pin 11 Arduino conectado al Pin 14 del 74HC595 (Data)
int dataPin = 11;
void setup() {
//configurar pines como salidas (output)
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
//contar desde 0 a 255
for (int i = 0; i < 256; i++) {
//poner latchPin en bajo para permitir el flujo de datos
digitalWrite(latchPin, LOW);
shiftOut(i);
//poner latchPin en alto para cerrar el registro y enviar datos
digitalWrite(latchPin, HIGH);
delay(500);
}
}
void shiftOut(byte dataOut) {
boolean pinState;
//registro de desplazamiento listo para enviar datos
digitalWrite(dataPin, LOW);
digitalWrite(clockPin, LOW);
for (int i=0; i<=7; i++) {
//set clockPin en LOW previo enviar un bit
digitalWrite(clockPin, LOW);
//si el valor de DataOut y (AND lógico) en bitmask es verdadero, poner pinState en 1 (HIGH)
if ( dataOut & (1<
pinState = HIGH;
}
else {
pinState = LOW;
}
//poner dataPin en HIGH o en LOW dependiendo de pinState
digitalWrite(dataPin, pinState);
digitalWrite(clockPin, HIGH);
}
//detener el desplazamiento de datos
digitalWrite(clockPin, LOW);
}

0 comentarios: