miércoles, 2 de febrero de 2011

Maqueta de semáforo con PinguinoVE

Hola people, esta vez les traigo un pequeño ejemplo de uso de nuestra tarjeta PingüinoVE, básicamente es una simple modificación del tutorial "Hola mundo de Pingüino" (del Wiki de PingüinoVE).

La idea de éste post es mostrar la facilidad con la que se puede trabajar con el dispositivo y crear soluciones adaptables y aplicables a infinidad de aspectos en nuestras vidas cotidianas.

Lo primero que vamos a configurar es el hardware, para esto necesitamos:

- 1 Proto Board
- 1 Pingüino BD4550 (aunque el ejemplo es adaptable a cualquier otro modelo de Pingüino)
- 1 LED rojo
- 1 LED amarillo
- 1 LED verde
- +/- 40cm de cable de cobre unifilar para puentes eléctricos

Utilizando el proto board y el cable de cobre unifilar vamos a conectar los puertos 7, 6 y 5 del conector P8 del Pingüino (BD4550) a los ánodos de los LEDs rojo, amarillo y verde respectivamente. Por otro lado, hacemos un puente entre cualquiera de los primeros tres pines del conector P1 del Pingüino (BD4550) y los cátodos de los tres LEDs. Por último conectamos el cable USB del Pingüino hasta una PC o laptop donde hayamos instalado el IDE de Pingüino.

Listo, de ésta manera ya tenemos nuestro hardware listo para seguir con el ejemplo, aquí les dejo una foto referencial:



Ahora vamos a escribir el siguiente código dentro de un archivo .pde que compilaremos en el IDE de Pingüino.

/*
Proyecto: Semaforo Simple
Autor: Ali Moreno <alimoreno@gmail.com>
blog: http://r3c4ll.blogspot.com
Comunidad PingüinoVE http:/www.pinguino.org.ve
*/

// Habilita el uso de los pines: 18 en adelante
#define PIC18F4550

// Declara la variable entera "pinLedRojo" y le asigna el valor 7
int pinLedRojo = 7;

// Declara la variable entera "pinLedAmarillo" y le asigna el valor 6
int pinLedAmarillo = 6;

// Declara la variable entera "pinLedVerde" y le asigna el valor 5
int pinLedVerde = 5;

// Rutina de Configuración e Inicialización (Setup)
void setup() {
    // Habilita el pin 7 como Salida Digital
    pinMode(pinLedRojo, OUTPUT);
    // Habilita el pin 6 como Salida Digital
    pinMode(pinLedAmarillo, OUTPUT);
    // Habilita el pin 5 como Salida Digital
    pinMode(pinLedVerde, OUTPUT);
}

// Rutina de Ejecución (Loop: Cíclica/Repetitiva)
void loop() {
    // Escribe un valor lógico ALTO en el pin 7 (ROJO)
    digitalWrite(pinLedRojo, HIGH);
    // Espera 10000 milisegundos (10 segundos)
    delay(10000);
    // Escribe un valor lógico BAJO en el pin 7 (ROJO)
    digitalWrite(pinLedRojo, LOW);
    // Escribe un valor lógico ALTO en el pin 5 (VERDE)
    digitalWrite(pinLedVerde, HIGH);
    // Espera 7000 milisegundos (7 segundos)
    delay(7000);
    // Escribe un valor lógico BAJO en el pin 5
    digitalWrite(pinLedVerde, LOW);     
    // Escribe un valor lógico BAJO en el pin 6 (AMARILLO)
    digitalWrite(pinLedAmarillo, HIGH);
    // Espera 3000 milisegundos (3 segundos)
    delay(3000);
    // Escribe un valor lógico BAJO en el pin 6 (AMARILLO)
    digitalWrite(pinLedAmarillo, LOW);
}

Una vez compilado lo subiremos (grabaremos) al dispositivo (PingüinoVE BD4550) a través del IDE de Pingüino. Para hacer esto debemos resetear el dispositivo (presionando el boton reset del mismo) y seguidamente (2 segundos de por medio) presionar el boton "Upload to Pinguino" del IDE.



Hecho esto, el Pingüino encenderá de nuevo, esta vez con nuestro programita controlando los LEDs de forma que se comporten como un semáforo. Los tiempos de cada LED pueden ser modificados a gusto del consumidor ;)

Aquí les dejo un video del funcionamiento...




Saludos, que lo disfruten!

2 comentarios:

  1. Hola, qué interesante? Dónde se puede conseguir el PingüinoVE?
    Saludos

    ResponderEliminar
  2. Disculpa la demora, no habia visto tu comentario :P

    En nuestra comunidad PinguinoVE (www.pinguino.org.ve) podemos ayudarte a conseguirlo, te invito a inscribirte en la lista de correo y el wiki.

    Saludos.

    ResponderEliminar