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:

inscreva-se

 

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:

Esquema de ligação, led e pushbutton
Esquema de ligação, led e pushbutton

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:

Um comentário em “Arduino – Botão com duas funções liga/desliga

  • junho 11, 2017 em 12:00 am
    Permalink

    Great article but it didn’t have evegtyhinr-I didn’t find the kitchen sink!

    Resposta

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *