Go Down

Topic: Led controlado por um botão. (Read 2182 times) previous topic - next topic

guiba2s

Olá, eu gostaria de um código onde se eu aperto um butão um led acende, continuando acesso.
Ai eu aperto denovo e ele apaga, já vi algo do tipo na internet mas ninguem não estou achando dinovo.

mmoscz

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

guiba2s

Não, esse código ai não é oque eu quero, nesse dai  o botão deve ficar pressionado para o led ficar ligado.
Eu quero o seguinte, aperto o butao o led fica ligado, e aperto novamente e o led desliga.

bubulindo

Code: [Select]


if (botao == ON && LED == APAGADO) {
    LED = LIGADO;
}
if (botao == ON && LED == LIGADO) {
    LED = APAGADO;
}


A lógica é esta. Convém lembrar que deves fazer um debounce ao botão.
This... is a hobby.

guiba2s

já li algo sobre debouncing mas não entendi muito bem, poderia explicar melhor sobre isto?

fabio_h

Isso é o que procura
http://www.arduino.cc/en/Tutorial/Switch

araujobrz

#6
Aug 22, 2012, 03:36 pm Last Edit: Aug 22, 2012, 03:44 pm by araujobrz Reason: 1
//OK Amigo vou postar um codigo aki ,,, espero que te ajude..
#define led 13  // Definimos o pino do led no 13
#define botao 2 // definimos o botao no pino 2


long UltimoTempo = 0; // Pega o Ultimo tempo apertado do Botao
int EstadoDoBotao = LOW; // Pega o Ultimo estado do Botao
int filtro = 300 ; // Filtra o ruido do botao 300 millseconds voce poder mudar  
int pegaValorDoBotao =LOW; // Set o valor Atual do botao como desligado

void setup() {
pinMode (led,OUTPUT); // Set o led para SAIDA
pinMode (botao,INPUT); // Set o botao como ENTRADA

}

void loop() {
   pegaValorDoBotao = digitalRead(botao); // Pega o valor atual do botao

  if (pegaValorDoBotao == HIGH && (millis() - UltimoTempo) > filtro) {
       /* Aki esta o pulo do gato
         Verifico se vc apertou o botao  , e verifico na mesma condicao se
        millis() = cronometro interno do arduino - o Ultimoperiodo for maior que o ruido                    esta condicao vai ser sempre verdadeira

       
       */
         if (EstadoDoBotao == HIGH) {
             EstadoDoBotao = LOW;
         }else {
             EstadoDoBotao = HIGH;
         }    
       UltimoTempo = millis();
  }
 
  digitalWrite(led,EstadoDoBotao);
  pegaValorDoBotao = digitalRead(botao); // Pega o valor atual do botao
}

okj000

Eis aqui um vídeo com os 2 códigos. 1 com led acendendo e apagando enquanto o botão está ou não pressionado. e o outro código que é o que faz o led permanecer aceso até a próxima vez que clicar e soltar o botão.

https://www.youtube.com/watch?v=O6WD1LK6_sA

Go Up