domingo, 18 de junho de 2017

Estrobo duplo alternado para estacionamento - CCS


Olá, hoje temos uma postagem do senhor Renato "Estrobo duplo alternado para estacionamento".
lista de peças para montagem em bancada:

- matriz de contatos pequena
- pic16F628A, microcontrolador da Microchip
- 2 resistor de 220 ohm para limitar a corrente do LED
- 2 LED de 3 ou 5 mm vermelho
- cabinhos para ligações dos componentes
- fonte de 5V, pode ser um carregador de celular ou suporte de 3 pilhas(4,5V)

O código fonte:
///////////////////////////////////////////////////////////////////////
//              Projeto: Estrobo duplo alternado para estacionamento //
//                 Nome: Renato Lôbo Rodrigues                       //
//                 Data: 12/03/17                                    //
//                Email: lobosoft@oi.com.br                          //
///////////////////////////////////////////////////////////////////////
#include <16F628A.h>
#use delay (clock = 4Mhz)
//Configure os fusíveis em acordo com o pic selecionado
#fuses NOWDT
#fuses PUT
#fuses NOBROWNOUT
#fuses NOMCLR
#fuses INTRC_IO
#fuses PROTECT

//Estes registros encontra-se nas funções especiais de cada modelo de pic.

#byte tris_portA = 0x85   //direção do portA
#bit led1        = 0x05.0 //pino A0
#bit led2        = 0x05.1 //pino A1

int1 flag=false;
//___________________________________________
void estrobo()
{
   int8 f;              //variável do laço for
   flag=!flag;          //inverte a variável flag
   if(flag){            //se flag é verdadeiro
      for(f=0;f<10;f++) //laço de contagem de 0 até 9
      {
         led1 = !led1 ; //Acende ou apaga o led1
         delay_ms(30);  //tempo de 30 milisegundos
      }
   }else{               //caso flag seja falso
      for(f=0;f<10;f++) //laço de contagem de 0 até 9
      {
         led2 = !led2 ; //Acende ou apaga o led1
         delay_ms(30);
      }
   }
}

//Rotina principal
void main()
{
   int16 conta=0;             //cria uma variável conta igual a zero
   tris_portA = 0b11111100;   //pino A0 e A1 como saída
   led1 = 0;                  //apaga o led1
   led2 = 0;                  //apaga o led2   

   while(true)                //laço infinito
   {
      conta++;                //inrementa conta
      if(conta>=25000)        // se conta é maior ou igual a 25000
      {
         conta=0;estrobo();   //zera a contagem e chama rotina de estrobo
      }//fim do if
   }//fim do while
} //fim do main

Vídeo de demonstração:

https://drive.google.com/file/d/0B9fK-FRZeeWNQWNsSXRzZmdMTVE/view?usp=sharing

2 comentários :

  1. Boa noite,

    Gostei muito deste projeto Estrobo duplo alternado para estacionamento - CCS

    Estou pretendendo montar este projeto, mas queria que ele tivesse dois estágio, o 1º pisca 3 sequencia individual como no vídeo e o 2º pisca novamente 3 sequencia simultâneo. Voltando depois para o loop.

    Seria possível você acrescentar esse segundo estágio na sua programação?

    Quero este projeto para colocar nas lâmpadas de ré do carro

    ResponderExcluir
  2. Desculpe, não entendi o "estágio"

    ResponderExcluir

olá,digite aqui seu comentário!