Ir para conteúdo
View in the app

A better way to browse. Learn more.

EletrônicaBR.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Acender cinco Ledes com um botão usando PIC

Featured Replies

Postado

Olá !

Muito obrigado mesmo.

Agora funcionou certinho.

Um grande abraço para todos !

 

 

Postado

@dindobel, Poderia criar uma variável e a cada vez que o botão fosse pressionado, ela seria incrementada.

Por exemplo:

int a=0

if(input_state(BOTAO))
{
a=a+1
}

 

Para controlar os leds com essa variável, ficaria assim:

If (a==1)
{
output high (led1);
}

If (a==2)
{
output low (led1)
output high (led2)
}

 

Antes destes comandos, deverá zerar a variável e todas as saídas.

 

Essa é uma forma de controlar passo a passo a sequência dos leds.

Claro que as sintaxes precisam ser adaptadas para o programa que está usando.

 

Postado

nas defines so tens defenido duas portas, 0 e 1.

Postado
  • Autor

Muito obrigado pelas dicas. Tentarei adaptar ao código e postarei o resultado.

Abraço a todos.

  • 2 semanas depois...
Postado

Tenta isso

obs: leds no portB

 

#include <16F628A.h>

 

//Configuracao FUSES

#FUSES NOWDT

#FUSES INTRC_IO

#FUSES NOPUT

#FUSES NOPROTECT

#FUSES NOBROWNOUT

#FUSES NOMCLR

#FUSES NOLVP

#FUSES NOCPD

 

//Definicoes portas

#define BOTAO PIN_A3

//Leds portB e botão portA

#define PINO_LED1 PIN_B0

#define PINO_LED2 PIN_B1

#define PINO_LED3 PIN_B2

#define PINO_LED4 PIN_B3

#define PINO_LED5 PIN_B4

 

//Define clock

#use delay(clock=4000000)

 

void main()

{

int status=1;

output_b(0b00000001);  // acende led1 e desliga os outros

while(1)

    {

    //Verifica se o botao foi pressionado

    if(input_state(BOTAO) == 0)

        {

            if (status == 32) // reicinia o processo

              {

                status = 1;

              }

            output_b(status);                               

            status = status*2;

        }

    }

}

Postado
  • Autor

Olá Amigo!!

Muito obrigado pela dica, mas ta dando problema.

O primeiro led inicia aceso, e quando aperto o botão todos os leds ficam piscando.

Tentei ajustar o código, mas meus conhecimentos são bastante limitados na programação.

 

 

Postado

@dindobel, Não sei em qual exemplo tirou a base para fazer o seu, mas se foi no exemplo que mostrei, tente inserir um pequeno tempo entre o acionamento do botão (debounce).

No exemplo abaixo, esse tempo é de 1 segundo (1000 mili-segundos).

 

int a=0

if(input_state(BOTAO))
{
delay_ms(1000);
  {
     if(input_state(BOTAO))
     a=a+1
     delay_ms(1000);
  }
}

 

Use resistores ligados entre a saída do PIC e o terra (resistores pull-down).

Postado

testado e funcionando dindobel

 

#include <16F628A.h>

 

//Configuracao FUSES

#FUSES NOWDT

#FUSES INTRC_IO

#FUSES NOPUT

#FUSES NOPROTECT

#FUSES NOBROWNOUT

#FUSES NOMCLR

#FUSES NOLVP

#FUSES NOCPD

 

//Definicoes portas

#define BOTAO PIN_A3

//Leds portB e botão portA

#define PINO_LED1 PIN_B0

#define PINO_LED2 PIN_B1

#define PINO_LED3 PIN_B2

#define PINO_LED4 PIN_B3

#define PINO_LED5 PIN_B4

 

//Define clock

#use delay(clock=4000000)

 

void main()

{

int status=1;

output_b(0b00000001);  // acende led1 e desliga os outros

while(1)

    {

    //Verifica se o botao foi pressionado

    if(input_state(BOTAO) == 1)

        {

            if (status == 32) // reicinia o processo

              {

                status = 1;

              }

            output_b(status);                               

            status = status*2;

            delay_ms(500);

        }

    }

}

5957aa85da9d6_Sem_ttulo.jpg.36073bd5de524acb5d8d88049410de5c.jpg

Postado
  • Autor

Olá !

Muito obrigado mesmo.

Agora funcionou certinho.

Um grande abraço para todos !

 

Postado

@dindobel,

 

Para finalizar o tópico, é só editar a primeira mensagem do tópico e mudar o prefixo para RESOLVIDO

 

prefixo.jpg

 

E não esqueça de clicar no joinha j+ de quem ajudou.

Participe agora da conversa!

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, faça login para postar com sua conta.

Visitante
Responder

Account

Navigation

Pesquisar

Pesquisar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.