Estou com dificuldades em manter o estado de um pino do Arduino em HIGH ou LOW.
Seguinte eu queria que ao apertar um push-button o led se acende-se e continuase aceso depois de soltar o botão e depois se eu aperta-se o botão de novo o led desligase.
Alguem sabe como? O código de exemplo que vem com arduino não serve porque o led desliga depois que se solta o botão.
Obrigado

Exibições: 964

Responder esta

Respostas a este tópico

Boa noite!

Tente este código aqui... testei estes dias e funcionou... o botão vai no pino 8 e o led no pino 13.

Anexos
Deve funcionar, você pode ajustar o tempo para sua aplicação.

#define buttonPin 2
#define ledPin 13

boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledLigado = true; // Define o led como apagado inicialmente

void setup()
{
  pinMode(buttonPin, INPUT);
  digitalWrite(buttonPin,HIGH);
  pinMode(ledPin, OUTPUT);
}

boolean debounce(boolean last)
{
  boolean current = digitalRead(buttonPin);
  if (last != current)
  {
    delay(5);//Tempo de debounce ajuste conforme necessário
    
    current = digitalRead(buttonPin);
  }
  return current;
}

void loop()
{
  currentButton = debounce(lastButton);
  if (lastButton == LOW && currentButton == HIGH)
  {
    ledLigado = !ledLigado; // se o Led esta ligado inverta seu estado "! inverso"
  }
  lastButton = currentButton;

  digitalWrite(ledPin, ledLigado);

}

Cara,
Testei e funcionou tudo certinho!!!
Entretanto estou com dificuldade de entender esse código.
Poderia me explicar o procedimento?
Obrigado

Consegui amigos.

Eu usei o codigo exemplo StateChangeDetection que vem com o arduino e modifiquei ele para funcionar.

Mais uma coisa como que eu poderia fazer para contar quantas vezes o botão foi precionado em 1 segundo??

Por exemplo se foi precionado 4 vezes o led acende se for 10 vezes outro led acende?

Alguem sabe?

Essa pergunta, qualquer um com um pequeno conhecimento em linguagens de programação saberia resolver em menos de 5 minutos.

Recomendo, caso queira vc mesmo desenvolver suas ideias, é estudar Lógica de Programação. Isso independe da linguagem utilizada. A lógica é a mesma pra todas.

Fique bom em lógica, e depois a linguagem de programação será o menor dos problemas pra vc.

Abraços!

int state = 0;
int led = 0;

void setup() {
pinMode(13, OUTPUT); // Led
digitalWrite(13,0); // inicia desligado
pinMode(2, INPUT);
digitalWrite(2,1);//pull up
}

void loop ()
{
state=digitalRead(2);
if (state == 0)
{
led =! led;
digitalWrite(13, led);
delay (500);
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço