PROGRAMACIÓN DE SISTEMAS EMBEBIDOS CON ARDUINO
sábado, 14 de abril de 2012
Laboratorio 12: Control de 8 LEDs con un IC 74HC595 (Shift Register).
Control de 8 LEDs con un IC 74HC595 (Shift Register):
El laboratorio número 12 consiste el control de 8 LEDs con un IC 74HC595 (Shift Register).
Arduino
//Pin connected to latch pin (ST_CP) of 74HC595 const int latchPin = 8; //Pin connected to clock pin (SH_CP) of 74HC595 const int clockPin = 12; ////Pin connected to Data in (DS) of 74HC595 const int dataPin = 11; void setup() { //set pins to output because they are addressed in the main loop pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); Serial.begin(9600); Serial.println("reset"); } void loop() { if (Serial.available() > 0) { // ASCII '0' through '9' characters are // represented by the values 48 through 57. // so if the user types a number from 0 through 9 in ASCII, // you can subtract 48 to get the actual value: int x=Serial.read(); Serial.print("Numero: "); Serial.println(x); // write to the shift register with the correct bit set high: enviarChar(x); } } //Envia un caracter para ser mostrado con los leds void enviarChar(int num){ int z=0; for(char i=0; i<8; i++){ //Enmascaramos el dato para dejar solo el bit mas significativo z=num & B1000000;//z sera 0 o 128 //Enviamos el bit dependiendo de z if(z==0){ enviar(LOW); }else{ enviar(HIGH); } //Desplazamos el numero un bit a la izquierda num=(num << 1); } } //Envia un bit al 74HC void enviar(int estado){ //Colocamos el dato en la salida del micro, en el pin de datos digitalWrite(dataPin, estado); //Almacenamos lo que hay en el pin de datos en el latch del IC mandando un pulso digitalWrite(latchPin, HIGH); digitalWrite(latchPin, LOW); //Desplazamos los datos colocando un pulso en el pin de clock digitalWrite(clockPin, HIGH); digitalWrite(clockPin, LOW); }
No hay comentarios:
Publicar un comentario
Entrada más reciente
Entrada antigua
Inicio
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario