5 oct. 2010

Cuenta atras con Arduino

 Recientemente ha salido a la luz la nueva versión de arduino , posee con respecto al hardware principalmente las mismas caracteristicas que el anterior modelo ( el arduino duemilanove) , a excepción de el nuevo chip para la conversión usb-serie, el cual no necesita drivers para ser programado

Arduino UNO 



Pero hoy , os voi ha hablar de mi Arduino Duemilanove, el cual estoi aprendiendo a programar gracias a el , lo compre este verano , y desde entonces he realizado varios proyectos, incluso algunos ya integramente escritos por mi, que a pesar de no tener ni idea de programación creo que es un buen comienzo , el ultimo que he realizado ha sido un cronometro cuenta atras, que cuenta desde 9 a 0, y una vez llega a 0 empieza a parpadear





Como podeis ver, he utilizado un display de 7 segmentos para mostrar los números , el cual me costo 0,80 € , el cual  luego conexioné  con arduino como muestro en la siguiente imagen creada usando Fritzing (un programa open source para crear esquemas con arduino de protagonista)




 como podeis ver , he puesto un potenciometro para ajustar la intensidad de los leds del display , y tambien he concetado un pulsador entre reset y gnd para reiniciar el atmega, y que asi se reinicie la cuenta atras.


Explicación del codigo: (codigo mas abajo)

1: empezamos definiendo los pines de arduino que vamos a usar, para ello simplemente ponemos int-el nombre que le querramos dar-el número de pin arduino que querramos usar (está marcado en la placa)

2: definimos a time como 1000 (1 segundo) , el cual proximamente será utilizado como delay , lo definimos de la misma forma que antes , ponemos int-el nombre que querramos usar para marcar en el delay la cifra 1000-la cifra que querramos definir para el delay

3: ponemos void setup y dos llaves "()" , y abrimos un corchete (dentro de este estaran definido lo que queremos plasmar en el display)

4: dentro del corchete ponemos pinMode , y definimos a todos los pines, como pines de salida , poniendo pinMode ("el nombre del pin que querramos definir como salida, OUTPUT)

5: definimos los leds que querramos que se enciendan ( HIGH) , y le ponemos un delay , para que estén dicho tiempo encendidos (el delay es el nombrado antes ( 1 segundo))

6. definimos de nuevo los leds que querramos que se apaguen (LOW) y le ponemos un delay ,para que estén dicho tiempo apagados,

7: seguimos definiendo leds con delays entre ellos para mostrar los diferentes números en el display

8: una vez definidos los números en el setup, creamos un void loop y 2 llaves "()" , y de nuevo abrimos un corchete

9: la función loop es una funcion de repeticion , en este programa le decimos a arduino que segun se inicie ejecute lo que hay dentro de setup , y una vez que acabe que ejecute sucesibamente lo que encuentre en el sector loop, yo en este caso hice que se repitiera el 0

10: para hacer que se repita algo , simplemente definimos los pines que querramos en HIGH (+5v) , le ponemos un delay , y los definimos de nuevo en LOW de neuvo con un delay para que se produzca el efecto de parpadeo...si solo los definieramos en HIGH estarían los pines definidos siempre endendidos


codigo:


int pin1= 2; // definimos los pines
int pin2= 3;
int pin3= 4;
int pin4= 5;
int pin5= 6;
int pin6= 7;
int pin7= 8;
int time= 1000; // time=delay

void setup ()

{

pinMode ( pin1 , OUTPUT);
pinMode ( pin2 , OUTPUT);
pinMode ( pin3 , OUTPUT);
pinMode ( pin4 , OUTPUT);
pinMode ( pin5 , OUTPUT);
pinMode ( pin6 , OUTPUT);
pinMode ( pin7 , OUTPUT);

digitalWrite ( pin1 , HIGH); // 9
digitalWrite ( pin2 , HIGH);
digitalWrite ( pin3 , HIGH);
digitalWrite ( pin4 , HIGH);
digitalWrite ( pin5 , HIGH);
digitalWrite ( pin6, HIGH );
delay (time);
digitalWrite ( pin1 , LOW); //9
digitalWrite ( pin2 , LOW);
digitalWrite ( pin3 , LOW);
digitalWrite ( pin4 , LOW);
digitalWrite ( pin5 , LOW);
digitalWrite ( pin6, LOW);
delay (time);
digitalWrite ( pin1 , HIGH); //8
digitalWrite ( pin2 , HIGH);
digitalWrite ( pin3 , HIGH);
digitalWrite ( pin4 , HIGH);
digitalWrite ( pin5 , HIGH);
digitalWrite ( pin6 , HIGH);
digitalWrite ( pin7 , HIGH);
delay (time);
digitalWrite ( pin1 , LOW); //8
digitalWrite ( pin2 , LOW);
digitalWrite ( pin3 , LOW);
digitalWrite ( pin4 , LOW);
digitalWrite ( pin5 , LOW);
digitalWrite ( pin6 , LOW);
digitalWrite ( pin7 , LOW);
delay (time);
digitalWrite ( pin1 , HIGH); //7
digitalWrite ( pin2 , HIGH);
digitalWrite ( pin5 , HIGH);
delay (time);
digitalWrite ( pin1 , LOW); //7
digitalWrite ( pin2 , LOW);
digitalWrite ( pin5 , LOW);
delay (time);
digitalWrite ( pin2 , HIGH); //6
digitalWrite ( pin3 , HIGH);
digitalWrite ( pin4 , HIGH);
digitalWrite ( pin5 , HIGH);
digitalWrite ( pin6 , HIGH);
digitalWrite ( pin7 , HIGH);
delay (time);
digitalWrite ( pin2 , LOW); //6
digitalWrite ( pin3 , LOW);
digitalWrite ( pin4 , LOW);
digitalWrite ( pin5 , LOW);
digitalWrite ( pin6 , LOW);
digitalWrite ( pin7 , LOW);
delay (time);
digitalWrite ( pin2 , HIGH); //5
digitalWrite ( pin3 , HIGH);
digitalWrite ( pin4 , HIGH);
digitalWrite ( pin5 , HIGH);
digitalWrite ( pin6 , HIGH);
delay (time);
digitalWrite ( pin2 , LOW); //5
digitalWrite ( pin3 , LOW);
digitalWrite ( pin4 , LOW);
digitalWrite ( pin5 , LOW);
digitalWrite ( pin6 , LOW);
delay (time);
digitalWrite ( pin1 , HIGH); //4
digitalWrite ( pin3 , HIGH);
digitalWrite ( pin4 , HIGH);
digitalWrite ( pin5 , HIGH);
delay (time);
digitalWrite ( pin1 , LOW); //4
digitalWrite ( pin3 , LOW);
digitalWrite ( pin4 , LOW);
digitalWrite ( pin5 , LOW);
delay (time);
digitalWrite ( pin1 , HIGH); //3
digitalWrite ( pin2 , HIGH);
digitalWrite ( pin4 , HIGH);
digitalWrite ( pin5 , HIGH);
digitalWrite ( pin6 , HIGH);
delay (time);
digitalWrite ( pin1 , LOW); //3
digitalWrite ( pin2 , LOW);
digitalWrite ( pin4 , LOW);
digitalWrite ( pin5 , LOW);
digitalWrite ( pin6 , LOW);
delay (time);
digitalWrite ( pin1 , HIGH); //2
digitalWrite ( pin2 , HIGH);
digitalWrite ( pin4 , HIGH);
digitalWrite ( pin6 , HIGH);
digitalWrite ( pin7 , HIGH);
delay (time);
digitalWrite ( pin1 , LOW); //2
digitalWrite ( pin2 , LOW);
digitalWrite ( pin4 , LOW);
digitalWrite ( pin6 , LOW);
digitalWrite ( pin7 , LOW);
delay (time);
digitalWrite ( pin1 , HIGH); //1
digitalWrite ( pin5 , HIGH);
delay (time);
digitalWrite ( pin1 , LOW); //1
digitalWrite ( pin5 , LOW);
delay (time);
digitalWrite ( pin1 , HIGH); //0
digitalWrite ( pin2 , HIGH);
digitalWrite ( pin3 , HIGH);
digitalWrite ( pin5 , HIGH);
digitalWrite ( pin6 , HIGH);
digitalWrite ( pin7 , HIGH);
delay (time);
digitalWrite ( pin1 , LOW); //0
digitalWrite ( pin2 , LOW);
digitalWrite ( pin3 , LOW);
digitalWrite ( pin5 , LOW);
digitalWrite ( pin6 , LOW);
digitalWrite ( pin7 , LOW);
delay (time);

}

void loop () {
digitalWrite ( pin1 , HIGH); //0
digitalWrite ( pin2 , HIGH);
digitalWrite ( pin3 , HIGH);
digitalWrite ( pin5 , HIGH);
digitalWrite ( pin6 , HIGH);
digitalWrite ( pin7 , HIGH);
delay (time);
digitalWrite ( pin1 , LOW); //0
digitalWrite ( pin2 , LOW);
digitalWrite ( pin3 , LOW);
digitalWrite ( pin5 , LOW);
digitalWrite ( pin6 , LOW);
digitalWrite ( pin7 , LOW);
delay (time);



0 comentarios:

ir arriba