/********** Proyecto **********
* Laboratorio 07: Controlar desde el Arduino, un Display LED de
* 7-Segmentos (Anodo Común), a través de un IC 74HC595, para mostrar un número
* de 0 a 9, dependiendo de la posición del Potenciómetro.
*
* Autor: Oscar E. Bustamante R.
*
* Version: 1
*/
/********** Librerias **********/
// ninguna
/********** Constantes **********/
#define POT A8 // Potenciometro
/********** Variables **********/
// pin que envia los datos al 74HC595
int data_pin = 9;
// pin que conecta el latch
int latch_pin = 10;
// pin que conecta el reloj
int clock_pin = 11;
// valores a enviar a el 74HC595, los cuales son enviados
// como binarios negativos usando ~ para negarlos
int display7seg[10] = {~63,~6,~91,~79,~102,~109,~125,~7,~127,~111};
// Guardamos el valor lo que recibimos por el potenciometro
int valor;
void setup() {
// La comunicacion serial sera a 9600 baudios
Serial.begin(9600);
// establece el potenciometro como entrada
pinMode(POT, INPUT); // Entrada del potenciometro.
// establecer pines a la salida para que pueda controlar el 74HC595
pinMode(data_pin, OUTPUT);
pinMode(latch_pin, OUTPUT);
pinMode(clock_pin, OUTPUT);
}
void loop() {
// Guarda los valores de analoogRead y lo mapeamos para evitar que salga
// del rango, para ser usado en el analogWrite.
valor = map(analogRead(POT),0,1023,0,9);
Serial.println(valor);
// toma el latch_pin en bajo (LOW), para que los LEDs no cambien, mientras
// se envian los datos (en bits).
digitalWrite(latch_pin, LOW);
// cambiar los bits ej. 0000 0001 0002 0003...
shiftOut(data_pin, clock_pin, MSBFIRST, display7seg[valor]);
//toma el latch_pin en alto (HIGH), para que los LEDs se iliminen
digitalWrite(latch_pin, HIGH);
}