Piscar LED's

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Piscar LED's

Mensagem  Lex em Sab Jun 04, 2011 11:18 pm

Olá, estou com uma certa dificuldade em deixar os LED's piscando sem parar, avançando e retrocedendo progressao com os botoes 1 e 2.
Teria como postar uma estrutura simples para que eu possa entender?
Obrigado

Lex

Mensagens : 1
Data de inscrição : 09/05/2011

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Piscar LED's

Mensagem  Bruno S. Avelar em Qui Jul 28, 2011 11:48 am

Olá Lex,

Pelo que entendi você quer piscar o LED e fazer a frequencia aumentar e diminuir apertando dois botoes certo?
Existem várias maneiras de implementar um firmware como este. Por exemplo, voce pode utilizar a biblioteca delays.h que faz delays através de espera ocupada no microcontrolador. O parametro que voce passará para esta biblioteca será uma variável que terá seu valor acrescido quando o botao 1 for pressionado e diminuido quando o botao 2 for pressionado.

Segue uma possibilidade de implementação para o PIC18F4550 utilizando o bootloader HID:

Código:



/** I N C L U D E S **********************************************************/
#include <p18cxxx.h>   // Necessário para que o compilador adicione a biblioteca
                  // com as definições do PIC selecionado no projeto, neste
                  // caso, o modelo 18F4550.

#include <delays.h>      // Biblioteca com funções de delay do compilador C18

/** D E F I N E S ************************************************************/
// LED's do Kit PICMinas: saídas digitais
//atribuição:   0 = LED desligado
//            1 = LED ligado
#define      LED_VERMELHO   PORTDbits.RD1
#define    BOTAO1          PORTEbits.RE1
#define    BOTAO2          PORTEbits.RE2


/** V A R I A V E I S  G L O B A I S ****************************************/

/**  P R O T O T I P O S  P R I V A D O S ***********************************/
void ConfiguraSistema(void);

/** F U N C O E S ************************************************************/
/******************************************************************************
 * Funcao:           void main(void)
 * Entrada:        Nenhuma (void)
 * Saída:             Nenhuma (void)
 * Descrição:      Função principal do programa.
 *****************************************************************************/
void main(void)
{
   unsigned char velocidade = 1;
   ConfiguraSistema();      // Configura as portas e periféricos do PIC.

    while(1)   // Laço infinito que executa o funcionamento principal do projeto.
   {

      if(BOTAO1)
      {
         velocidade = velocidade + 10;
      }   
      else
      {
         if(BOTAO2)
         {
            velocidade = velocidade - 10;
         }   
      }
      
      LED_VERMELHO = 0;   //Desliga o Led Vermelho
      Delay10KTCYx(velocidade);   

      LED_VERMELHO = 1;   //Liga o Led Vermelho
      Delay10KTCYx(velocidade);   
   }//end while(1)

}//end main

/******************************************************************************
 * Funcao:           void ConfiguraSistema(void)
 * Entrada:        Nenhuma (void)
 * Saída:             Nenhuma (void)
 * Descrição:      ConfiguraSistema é a rotina de configuração principal do PIC.
 *               Seu objetivo é configurar as portas de I/O e os periféricos
 *               do microcontrolador para que os mesmos trabalhem da maneira
 *               desejada no projeto.
 *****************************************************************************/
void ConfiguraSistema(void)
{
   ADCON1 = ADCON1 | 0x0F;       // Desabilita as portas analógicas

   // Cofigura saida digital
   TRISDbits.TRISD1 = 0;      // RD1: LED_VERMELHO
   // Configura entradas digitais
   TRISEbits.TRISE1 = 1;
   TRISEbits.TRISE2 = 1;

}//end ConfiguraSistema

/** V E C T O R  R E M A P P I N G ******************************************/
// Rotina necessária para o compilador C18 saber onde é o início do vetor de
// "reset".
// Copiar na íntegra esta parte do código dentro do arquivo "main.c" de TODO
// projeto usado com o Bootloader no PIC.

extern void _startup (void);        // See c018i.c in your C18 compiler dir
   #pragma code REMAPPED_RESET_VECTOR = 0x1000
   void _reset (void)
   {
       _asm goto _startup _endasm
   }
/** FIM DO ARQUIVO main.c ***************************************************************/
avatar
Bruno S. Avelar
Admin

Mensagens : 74
Data de inscrição : 26/07/2009
Idade : 33
Localização : Belo Horizonte MG

Ver perfil do usuário http://picminas.forumeiros.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum