Ir ao conteúdo
  • Cadastre-se
pedromg11

Arduino Tempo com o botão pressionado

Recommended Posts

Bom dia, eu estou montando um transmissor FM, e nesse transmissor eu uso dois botões um para ligar outro para desligar, ate ai beleza, porém no meu projeto eu preciso que quando eu segurar os dois botões por 5 segundos quero que ele desligue um pisca  led e ative a base de um transistor PNP e quando eu segurar novamente os dois botões por 5 segundos ele ligue o pisca led e matém ativado a base do transistor PNP, eu fiz um código mas não sei como fazer o microcontrolador gravar o tempo que o botão esta pressionado sem causar nenhum conflito, se tiver como alguém me ajudar fico muito agradecido valeu 

 

#define led 0 // led indicador
#define interruptor 1 // base do transistor PNP
#define botaoON 3 // botão de ligar 
#define botaoOFF 4 // botão de desligar
int status_botao = 0; // variavel que guarda o státus do botão

void setup()
{
pinMode(led,OUTPUT); // configura o pino do led como saida
pinMode(interruptor,OUTPUT); // configura o pino do interruptor como saida
pinMode(botaoON,INPUT); // configura o pino do botão de ligar como entrada
pinMode(botaoOFF,INPUT); // configura o pino do botão de desligar como entrada
digitalWrite(interruptor, HIGH); // mantém o transistor desativado

}

void loop(){

if(digitalRead(botaoON) == HIGH){ // se o botão for acionado, muda o status do botão para 1
status_botao = 1;
}

if(digitalRead(botaoOFF) == HIGH){ // se o botão for acionado, muda o státus do botão para 2
status_botao = 2;
}

if(digitalRead(botaoOFF) == HIGH & digitalRead(botaoON) == HIGH){ // se o botão de ligar e o botão de desligar for precionado ao mesmo tempo, muda o státus do botão para 3
status_botao = 3;
}

if(status_botao == 1){ // se o státus for 1, aciona a base do transistor e inicia o pisca led 
digitalWrite(interruptor, LOW);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}

if(status_botao == 2){ // se o státus do botao for 2, desativa o transistor e desativa o pisca led 
digitalWrite(interruptor,HIGH);
digitalWrite(led,LOW);
}

if(status_botao == 3){ // se o státus do botão for 3, desativa o pisca led e matém o transistor ativado 
digitalWrite(interruptor,LOW);
digitalWrite(led,LOW);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja a lógica que o amigo postou aqui: https://www.clubedohardware.com.br/forums/topic/1292166-botão-temporizado-com-pic16f84a-como-fazer/

Posto isto, acho que basta colocar algo como:

if (botao1 = true) and (botao2 = true) then....

 

acho que dá para fazer algo assim... mas vamos esperar alguém com mais experiência...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×