Arduíno – Botão e LED 2

No ultimo poste mostrei como acender o LED que esta na placa do Arduíno, se você ainda não viu então click aqui.

Agora vamos fazer o LED ficar acesso apos soltarmos o botão, com poucas mudanças no código e a adição de um comando novo podemos alternar o estado do LED.

O código fonte:

//Constantes 
const int botaoPino = 1;           //Nome do pino do botão
const int ledPino = 13;            //Nome do pino do LED

// Variaveis
int estadoLed = HIGH;              //Estado atual do pino de saída
int estadoBotao;                   //Ultima leitura atual do pino de entrada
int ultimoEstadoBotao = LOW;       //Leitura anterior do pino de entrada
int estadoBotaoAgora;              //Estado do botão atual
long ultimaLeituraTempo = 0;       //A última vez que o pino de saída foi alternado
long tempoEstabilizacao = 50;      //O tempo de estabilização. Pode aumentar para melhor estabilidade se for preciso 
//-----------------------------------------------------------------------------------------------------------------------
void setup() {
  pinMode(botaoPino, INPUT);          //Definindo o pino digital como entrada
  pinMode(ledPino, OUTPUT);           //Definindo o pino digital como saída
  digitalWrite(ledPino, estadoLed);   //Definindo estado inicial do LED
}
//----------------------------------------------------------------------------------------------------------------------
void loop() {
  estadoBotaoAgora = digitalRead(botaoPino);                  //Variável estadoBotaoAgora recebe a leitura do que esta acontecendo no botaoPino  
  if (estadoBotaoAgora != ultimoEstadoBotao) {                //Comparo se o estadoBotãoAgora é diferente do ultimoEstadoBotao, se for então...
    ultimaLeituraTempo = millis();                            //Gravo na variável ultimaLeituraTempo o tempo de execução do Arduíno, ou seja, o tempo que o Arduíno esta lidado
  }
  if ((millis() - ultimaLeituraTempo) > tempoEstabilizacao) { //Desconta o tempo gravado do tempo atual, se for maior que o tem o de estabilização então...
    if (estadoBotaoAgora != estadoBotao) {                    //Verifico se o esto do botão agora é diferente que o estado do botão se for...
      estadoBotao = estadoBotaoAgora;                         //estadobotão recebe estadoBotaoAgora
      if (estadoBotao == HIGH) {                              //Se estadoBotao for igual a HIGH (alto) então...
        estadoLed = !estadoLed;                               //Inverto o estado do LED, ou seja, se estava no HIGH(alto) mudo para LOW(baixo), se estava no LOW(baixo) mudo para HIGH(alto). 
      }
    }
  }
  digitalWrite(ledPino, estadoLed);           //Escrevo na saída o estado do LED HIGH ou LOW que ira acender ou apagar o LED 
  ultimoEstadoBotao = estadoBotaoAgora;       //Gravo na variável ulitmoEstadoBotao o estadoBotaoAgora para que esta informação possa ser usada novamente no inicio do programa.
}

Neste programa o destaque fica para o comando Millis que retorna quanto tempo o Arduíno esta ligado, como este numero pode ficar realmente grande, usamos a variável Long para recebe-lo.

O diagrama de ligação esta logo abaixo:

Button_esquema_1

Espero que tenha gostado!

Inscreva-se no meu canal no YouTube: YouTube.com/AndersonLimaVlog
Me siga nas redes sociais:
FaceBook
Twitter
Google Plus

Até a próxima!!!

 

2 thoughts on “Arduíno – Botão e LED 2

  1. Boas Anderson… sou novato com Arduino, mas já consigo fazer algumas coisas… tenho razoável conhecimento em eletrônica, mas estou batendo cabeça com programação Arduino. Preciso de sua ajuda, se puder é claro.
    Comprei um módulo com 2 reles para ligar a um NANO V3. Os reles são acionados de forma alternada, com 5 min. cada. Configurei mais 2 portas para acionar 2 leds, também de forma alternada (resistor 220R ligado ao GND, comum para os dois leds) junto com cada um dos reles, indicando qual relê está sendo acionado, porém um dos leds parou de funcionar e não estava queimado; fui verificar o sinal na saída do pino e não há tensão. Tentei configurar outras portas disponíveis, porém nenhuma delas funcionou. É possível que tenha queimado as saídas por sobrecarga de corrente?

    1. Ivan, me desculpe, estive ausente por um período longo por aqui, acho que já deve ter resolvido seu problema, mas acho que pode ser algum problema na programação, os módulos de rele tem um circuito para evitar a sobrecarga.

Deixe uma resposta para Ivan Cancelar resposta

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