Vous êtes sur la page 1sur 5

3rd April 2013

Recientemente adquir un pequeo gadget, un Arduino Uno R3 [http://arduino.cc/en/Main/arduinoBoardUno] ,


as que me he dedicado a incursionar en pequeos proyectos por diversin, uno de ellos y que describir a
detalle es un reloj que muestra la hora en binario, un led para cada digito traducido como 1 (Encendido) y 0
(Apagado).
Circuito ensamblado y conectado al Arduino:
[http://4.bp.blogspot.com/-_XZ_XOmTrO4/UVzniJmGPuI/AAAAAAAAAMM/IJuQIU2-
G9s/s1600/IMG_20130403_215334.jpg]
Circuito ejecutandose con un paso de 10ms para apreciar el comportamiento del circuito:
Para empezar, se vuelve til tener un diagrama del circuito que se realiza, para esto necesitamos los datos
que tendr el circuito.
Los pins de I/O digital del arduino manejan un voltaje de 5V a 40mA.
Reloj Binario: Circuito de LEDs controlado por un
Arduino
Pgina 1 de 5 Reloj Binario: Circuito de LEDs controlado por un Arduino
03/03/2014 http://ioniancoder.blogspot.mx/2013/04/reloj-binario-circuito-de-leds.html
Los LEDs que fueron usados consumen 3V a 20mA (Distintos Leds, usan distintos voltajes y requieren
corrientes diferentes), es por ello que para evitar el deterioro de los LEDs es necesario usar una resistencia,
para calcularla nos valemos de la ley de Ohm mediante la siguiente formula:
[http://3.bp.blogspot.com/-dTRCb2R6_94/UVzRYvyIN1I/AAAAAAAAAL8/D-Ri5LStxEA/s1600/ohm.png]
R: Resistencia (En Ohmios)
V: Voltaje (en Voltios)
I: Corriente elctrica (en Amperios)
En este caso usamos el voltaje resultante de la diferencia entre la entrada y lo consumido por el LED y la
corriente del LED.
20mA = 0,02A
R= (5-3)V/0.02A = 100 Ohm
Con los datos obtenidos se puede realizar el diagrama, en este caso es el siguiente:
[http://2.bp.blogspot.com/-F6VgcZL4ttE/UVzPQ8-
Yx0I/AAAAAAAAALw/E8ECe_nz2nc/s1600/Circuito.png]
Para poder controlar las luces para que se comporten como el reloj deseado, se debe codificar un programa
para el arduino, el pequeo programa simplemente acta como un reloj, pero tiene una funcin que se
encarga de encender los leds transformando los valores de minutos y horas (base 10) a binario (base 2) y
encender y apagar los LEDs correspondientes.
Pgina 2 de 5 Reloj Binario: Circuito de LEDs controlado por un Arduino
03/03/2014 http://ioniancoder.blogspot.mx/2013/04/reloj-binario-circuito-de-leds.html
Para esto, existe una manera muy sencilla de hacer la conversin y revisar bit a bit el cambio de base de
los nmeros, el equivalente al numero en base 10 se obtiene con la operacin modulo de la siguiente
manera:
Entero X en base 10.
X%2= (1 o 0), este valor corresponde al bit menos significativo.
Para obtener el siguiente numero, realizamos la misma operacin sobre el resultado obtenido dividiendo X
entre 2.
X/2 = Y
Y%2 = (1 o 2), este valor corresponde al bit siguiente de derecha a izquierda.
Este procedimiento se repite hasta que la divisin entera del numero a dividir de como resultado cero y el
resto sera el bit mas significativo del numero en binario.
Ej: X = 5
5%2= 1 (primer bit)
5/2 = 2
2%2 = 0 (segundo bit)
2/2 = 1
1%2 = 1 (tercer bit)
1/2 = 0 (finalizar)
Los bits se ordenan de ultimo a primero, por lo tanto, la representacin en binario del numero 5 es 101.
El cdigo para el programa de arduino utilizado es el siguiente:
int minuteOne = 4;
int minuteTwo = 5;
int minuteThree = 6;
int minuteFour = 7;
int minuteFive = 8;
int minuteSix = 9;
int hourOne = 10;
int hourTwo = 11;
int hourThree = 12;
int hourFour = 13;
void setup(){
pinMode(minuteOne, OUTPUT); pinMode(minuteTwo, OUTPUT); pinMode(minuteThree, OUTPUT);
pinMode(minuteFour, OUTPUT); pinMode(minuteFive, OUTPUT); pinMode(minuteSix, OUTPUT);
pinMode(hourOne, OUTPUT); pinMode(hourTwo, OUTPUT); pinMode(hourThree, OUTPUT); pinMode
(hourFour, OUTPUT);
}
int hour = 0;
int minute = 0;
int second = 0;
Pgina 3 de 5 Reloj Binario: Circuito de LEDs controlado por un Arduino
03/03/2014 http://ioniancoder.blogspot.mx/2013/04/reloj-binario-circuito-de-leds.html
void printTime(int h, int m){
if(m%2==0){
digitalWrite(minuteOne, LOW);
}else{
digitalWrite(minuteOne, HIGH);
}
if((m/2)%2==0){
digitalWrite(minuteTwo, LOW);
}else{
digitalWrite(minuteTwo, HIGH);
}
if(((m/2)/2)%2==0){
digitalWrite(minuteThree, LOW);
}else{
digitalWrite(minuteThree, HIGH);
}
if((((m/2)/2)/2)%2==0){
digitalWrite(minuteFour, LOW);
}else{
digitalWrite(minuteFour, HIGH);
}
if(((((m/2)/2)/2)/2)%2==0){
digitalWrite(minuteFive, LOW);
}else{
digitalWrite(minuteFive, HIGH);
}
if((((((m/2)/2)/2)/2)/2)%2==0){
digitalWrite(minuteSix, LOW);
}else{
digitalWrite(minuteSix, HIGH);
}
if(h%2==0){
digitalWrite(hourOne, LOW);
}else{
digitalWrite(hourOne, HIGH);
}
if((h/2)%2==0){
digitalWrite(hourTwo, LOW);
}else{
digitalWrite(hourTwo, HIGH);
}
if(((h/2)/2)%2==0){
digitalWrite(hourThree, LOW);
}else{
digitalWrite(hourThree, HIGH);
}
if((((h/2)/2)/2)%2==0){
digitalWrite(hourFour, LOW);
}else{
digitalWrite(hourFour, HIGH);
Pgina 4 de 5 Reloj Binario: Circuito de LEDs controlado por un Arduino
03/03/2014 http://ioniancoder.blogspot.mx/2013/04/reloj-binario-circuito-de-leds.html
}
}
void loop(){
second++;
if(second==60){
second=0;
minute++;
if(minute==60){
minute = 0;
hour++;
if(hour==12){
hour=0;
}
}
}
printTime(hour,minute);
delay(1000);
}
Publicado 3rd April 2013 por Andres

Introduce tu comentario...
Comentar como: Seleccionar pe
Publicar Vista previa
0
Add a comment
Pgina 5 de 5 Reloj Binario: Circuito de LEDs controlado por un Arduino
03/03/2014 http://ioniancoder.blogspot.mx/2013/04/reloj-binario-circuito-de-leds.html

Vous aimerez peut-être aussi