Go Down

Topic: Led controlado por um botão. (Read 1 time) 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.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

guiba2s

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

fabio_h


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