Arduino – Botão com duas funções liga/desliga
Fala ai pessoal, neste post vamos ver como empregar duas funções em um único botão no Arduíno, ou seja, vamos ver como desligar e ligar uma lampada usando o mesmo botão.
Acontece que em muitos projetos de automação temos a função de apagar e de acender uma lampada pelo celular ou por um controle infravermelho e nosso interruptor mecânico comumente usado fica atrapalhando esse tipo de esquema, por exemplo, se a lampada tiver acesa pelo interruptor convencional você não tem como pagar ele pelo seu controle automatizado com relé e vice versa.
Outra problemática é que os códigos de programação mais encontrados na internet só atribuem uma função a um botão, teríamos que usar dois botões, um para ligar e outro para desligar a lampada, o que torna o projeto mais caro e mais complicado.
Com o uso de variáveis no programa, vamos aprender a atribuir duas funções em um único botão.
PARA TUTORIAIS EM VÍDEO, INSCREVA-SE NO CANAL DO YOUTUBE, BASTA CLICAR NO BOTÃO ABAIXO:
Vamos precisar de uma placa Arduíno logicamente, um pushbutton, um resistor de 10 k ohm, um led, um resistor de 300 ohm, fios Jumper e o projeto será montado em uma protoboard.
O projeto de ligação deste projeto é bem simples como vocês podem ver na imagem abaixo:

Agora vamos ao mais importante para este projeto, o código de programação e seus devidos comentários:
//Nerdking.net.br
//Função Liga / Desliga num mesmo botão
//Base para projetos futuros
int led = 8; // led no pino 8
int botao = 7; // botão no pino 7
int funcaoa = 0; // valor instantaneo enviado pelo botão
int funcaob = 0; // valor guardado
int estado=0; // guarda o valor 0 ou 1 (HIGH ou LOW)
void setup(){
pinMode(led,OUTPUT); //Define o led como saida
pinMode(botao,INPUT); //Define o botão como entrada
}
void loop(){
funcaoa=digitalRead(botao); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((funcaoa == HIGH) && (funcaob == LOW)) {
estado = 1 - estado;
delay(500); // Tempo apertando o botão, se fica pouco de mais a o led fica piscando rapidamente, não é aconselhavel deixar menos que 500
}
funcaob=funcaoa;
if (estado == 1) {
digitalWrite(led, HIGH); // liga o led
} else {
digitalWrite(led, LOW); // desliga o led
}
}
Note que neste código não usamos nenhum tipo de biblioteca e de forma simples com variáveis declaradas conseguimos fazer com que um único botão desempenha-se duas funções, nos próximos post vamos adicionar um controle remoto IR a este projeto, continue visitando o site para não ficar de fora:




Great article but it didn’t have evegtyhinr-I didn’t find the kitchen sink!
I blog frequently and I truly thank you for your information. Your article has truly peaked my interest. I am going to bookmark your website and keep checking for new details about once per week. I subscribed to your RSS feed as well.
replica van cleef & arpels ring http://www.fclb.co/
Muito bom! Estava precisando de um desse. Porém deu um erro:
‘amp’ was not declared in this scope
if ((funcaoa == HIGH) && (funcaob == LOW)) {
^
_1_toque_arduino:21: error: expected ‘)’ before ‘;’ token
if ((funcaoa == HIGH) && (funcaob == LOW)) {
^
_1_toque_arduino:21: error: ‘amp’ was not declared in this scope
if ((funcaoa == HIGH) && (funcaob == LOW)) {
^
exit status 1
‘amp’ was not declared in this scope
O que seria?
Resolvi o problema.
Retirei o:
&&
e deixei só && e resolveu o problema!
tudo errado aspas ”amp” e o funcaob???? ;-;
Não funciona!
You really make it seem so easy with your presentation but I find this matter to be actually something which I think
I would never understand. It seems too complicated and very broad for
me. I’m looking forward for your next post, I’ll try to get the hang of it!
Have you ever thought about adding a little bit more than just your
articles? I mean, what you say is fundamental and everything.
However imagine if you added some great photos or video clips to give your posts more, “pop”!
Your content is excellent but with images and video clips, this site could undeniably be one of the best in its field.
Terrific blog!
I used to be recommended this website by my cousin. I’m now not positive whether or not this put
up is written through him as no one else recognize such distinct
about my problem. You are wonderful! Thanks!
I was wondering if you ever thought of changing the
layout of your website? Its very well written; I love what youve
got to say. But maybe you could a little more in the way of content so
people could connect with it better. Youve got an awful lot of text for only having
1 or two images. Maybe you could space it out better?