Secuencia de Leds con Arduino

Publicado: febrero 10, 2012 en Arduino
Etiquetas: , , ,

Hace un tiempo compre una placa de Arduino pero por falta de tiempo, había hecho algunos ejemplos pero quería al menos documentar como funciona de una manera sencilla (para dummies), ademas que acabando de cursar una materia de la Universidad llamada Microprocesadores en la cual se aprendió bastante pero también miraba que todo lo que hacíamos en las prácticas se me facilitaría la vida si usara mi placa de Arduino (además que aunque los pic’s son baratos tocaba comprar quemador de pic’s) y bueno de ahi surgío este pequeño ejemplo, espero que les guste y cualquier cosa no duden en preguntar o colaborar en el aprendizaje de esta gran placa.

Materiales

1 Placa de arduino
1 Protoboard
8 Leds (cualquier color)
8 resistencias de 220  Ω
1 resistencia de 1 K Ω
1 pulsador
Cable Utp

1 El programa consiste en que al presionar el pulsador los leds cambien de secuencia, las secuencias son las siguientes (1) Leds Encendidos (0) Leds apagado:

a)
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0
.
.
1 0 0 0 0 0 0 0

b)
0 0 0 1 1 0 0 0
0 0 1 1 1 1 0 0
0 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1

c)
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 1
0 0 0 0 0 1 1 1
.
.
1 1 1 1 1 1 1 1

d)
0 0 0 0 1 1 1 1
1 1 1 1 0 0 0 0
.
.

2. Como sabemos los leds tiene un anodo (+) y un catodo (-), de un lado conectaremos todos los Catodos a las resistencias de 220 Ω y estas a GND y de los anodos conectaremos a los pines del 2 al 9, las resistencias se colocan con el fin que no quemar los leds.

3. Conectamos el pulsador de la siguiente manera de un lado a 5V y del otro conectamos una resistencia a tierra y tambien un cable al pin A0 que sera el que nos permita cambiar de secuencia cada vez que lo presionemos, Se coloca la resistencia de 1 k Ω  porque haria un puente entre GND y el pin A0 de esta manera la lectura de entrada sera siempre 0, al presionar el pulsador lo que hace es hacer puente entre 5V y A0, de esta manera conseguimos el valor de 1 con esto los valores de entrada unicamente seran 1 y 0.

Aquí muestro el montaje realizado en un software llamado Fritzing V 0.7.0 de licencia GNU GPL v3 el cual lo pueden conseguir en http://www.fritzing.org

Montaje en Protoboard

Esquema Proyecto

4. Cargar el siguiente código, esta explicado.


int saltar=0; // Variable que indica el numero de la secuencia a ejecutarse

void setup() {

pinMode(A0, INPUT); //indicamos el pin de entrada
for(int i=2;i<=9;i++){ //indicamos los pines de salida
pinMode(i, OUTPUT);
}
}

void loop() {
if (digitalRead(A0)==HIGH){ //Al presionar el pulsador
saltar++; // Cambia de secuencia
if (saltar>3){ //Solo hay 4 secuencias 0,1,2 y 3 al ser 3 . .
saltar=0; // Vuelve a secuencia 0
}
while (digitalRead(A0)==HIGH){} // Mientras se pulsa no haga nada mas
}

if(saltar==0){ //Si es 1 inicie funcion de secuencia1
secuencia1();
}
if(saltar==1){ //Si es 2 inicie funcion de secuencia2
secuencia2();
}
if(saltar==2){ //Si es 3 inicie funcion de secuencia3
secuencia3();
}
if(saltar==3){ //Si es 4 inicie funcion de secuencia4
secuencia4();
}

}
void secuencia1(){
for (int i=2; i<=9; i++){ //Pin 2 al 9
digitalWrite(i, HIGH); // Prenda pin actual
digitalWrite(i-1,LOW); // Apage el Anterior
delay(50); // retardo entre prender y apagar
}
for (int i=9; i>=2; i--){ //Al contrario de la
digitalWrite(i, LOW); // anterior secuencia va de 9 a 2
digitalWrite(i-1,HIGH);
delay(50);
}
}

void secuencia2(){
int k=11; // inicializo una variable auxiliar K
for(int i=6; i<=9;i++){ //leo de 6 a 9
digitalWrite(i, HIGH); // prendo pin actual
digitalWrite(k-i, HIGH); // prendo pin de la diferencia 11-6 = 5
delay(50); //retardo
}
for(int i=9; i>=2;i--){ // Al contrario de lo anterior
digitalWrite(i, LOW);
digitalWrite(k-i, LOW);
delay(50);
}
}

void secuencia3(){
for(int i=2; i<=9; i++){
digitalWrite(i,HIGH);
delay(50);
}
for(int i=9; i>=2;i--){
digitalWrite(i,LOW);
delay(50);
}
}

void secuencia4(){
int k=11;
for(int i=2; i<=5;i++){
digitalWrite(i,HIGH);
digitalWrite(k-i,LOW);
}
delay(150);
for(int i=2; i<=5;i++){
digitalWrite(i,LOW);
digitalWrite(k-i,HIGH);
}
delay(150);
}

Ahi los dejo con una imagenes y un video de lo que hace.

Espero que les haya gustado y les sirva de ayuda para inicializarce en Arduino.

About these ads
Comentarios
  1. mmsouto dice:

    Me ha gustado mucho la idea, estoy en ello a la espera de que me llegue material para probarlo y despues tratar de controlar de la misma forma reles y puede que anulando el pulsador para que sean los cambios ciclicos, es para hacer un cartel luminoso con efectos.

    A ver como va la cosa

    Saludos y sigue asi ;)

    • Yo he trabajado con matrix de leds en las que se puede escribir letras para hacer anuncios, en el ejemplo utilice el pulsador para tener en cuenta como es el uso de un pulsador en los montajes y como implementar en el código.

  2. barincho dice:

    hola buenas tardes, soy nuevo en el foro y estoy probando y aprendiendo programar en c pics, y la secuencia que mostras me interesa para lograr efectos como los barrales de la policia o bomberos, yo no poseo arduino, pero creo que copiando el programa y compilandolo con el ccs puedo lograr programarlo con el pickit 2, la preguenta es si se puede incluir en el programa el cambio de secuencia sin usar un pulsador, es decir encienco el circuito y solo hace los cambios de secuencia? desde ya muchas gracias

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s