domingo, 28 de abril de 2013

PROGRAMACION DE PIC EN C

JUEGO DE LUCES (COCHE FANTÁSTICO)

En esta oportunidad estaremos presentando un llamativo juego de luces que oscilaran de manera diferente, este juego de luces se realizara con la ayuda de sentencias como If o for.
Entonces para mejor comprensión tenemos el esquema en Isis Proteus, vamos a utilizar los pines del puerto B, para conectar como salidas a nuestros LEDs.


Bueno en este ejemplo no hay mucho que explicar, pero si hay que recordar como se usa el ciclo for.

for (inicializacion; condición de termino; incremento)
{
    sentencias();
}

A través del ciclo for recorreremos las matrices que vamos a crear para que los LEDs sean encendidos o apagados.

// Juego de Luces - PIC en C

#include <16f877a.h> // incluimos el archivo PIC a utilizar
#use delay(clock = 4000000) // Reloj de 4 Mhz
#fuses XT, NOWDT,NOLVP // fusibles XT(XTal) = 4 Mhz
#use fast_IO(B) // permite utilizar las funciones output_x() , etc.

// funcion principal
void main()
{
   signed int i;  // Declaramos a la variable entera i con signo
   int LEDs1[4] = {0b10000001,0b01000010,0b00100100,0b00011000} // Primer arreglo declarado
   int LEDs2[10]={0b01111111,0b10111111,0b11011111,0b11101111,0b11110111,0b11111011,0b11111101,0b11111110} // Segundo arreglo
 
  set_tris_B(0x00) ; // Declaramos a los pines del puerto B como salidas

     while(true) // Bucle infinito
     {
         for(i=0;i<4;i++)
         {
            output_B(LEDs1[i]); // por el puerto B se saca lo que hay en el primer arreglo del incio al final
            delay_ms(300); // 300 milisegundos es conveniente
         }
            output_B(0xFF);   // después que salga del bucle ponemos todos los pines a 1 durante 300 ms.
            delay_ms(300);
        for(i=0; i<9; i++)
        {
            output_b(LEDS2[i]);  // recorremos el 2 arreglo del inicio al final
            delay_ms(300);
        }
            output_B(0xFF); // ponemos otra vez a 5v todos los pines
            delay_ms(300);
   
       for(i=9; i>=0; i--)
       {
            output_b(LEDS2[i]); // recorremos el segundo arreglo de final al inicio
            delay_ms(300);
       }
            output_B(0xFF); // ponemos a 5v
            delay_ms(300);    
      for(i=4; i>=0; i--)
       {
            output_b(LEDS1[i]); // vamos del final al inicio
            delay_ms(300);
      }
    }//Fin del while
} // Fin del programa





Como se habrán dado cuenta, el programa es bastante sencillo y se puede hacer muchas variantes; ya queda  a la imaginación de cada uno como es que lo quiere hacer funcionar, puede aumentarle arreglos y poner mas ciclos for o poner a 5V los pines, etc.

No hay comentarios:

Publicar un comentario