estou desenvolvendo um projeto e atolei em uma coisa simples,
gostaria de ligar um LED com um botão, ao apertá-lo por um instante o LED LIGA e ao apertá-lo novamente o LED desliga, como faço isso?
Tags:
Você fazer isso com uma máquina de estados finito.
como faço isso amigão?
O exemplo Button que vem com o Arduino faz exatamente isso. Para abri-lo: File\Examples\Digital\Button.
[],
Mauro
Errado amigo, esse exemplo o led só fica acesso enquanto você está pressionando o botão. O amigo quer que o led continue acesso caso você aperte e solte, e se apertar e soltar novamente ele apaga.
É mm, vc tem razão.
Aí vai então um código que faz isso. Não tenho a minha plaquinha aqui, então não testei. Se não for isso, é parecido.
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;
int ledState = 0;
int oldState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState != oldState)
{
ledState=buttonState;
oldState=buttonState;
}
digitalWrite(ledPin, ledState);
}
infelizmente não funcionou o seu código, o LED fica ligado apenas no instante em que eu estou apertando o botão
Ops... vou testar aqui, já estou em casa.
Isso não vai funfar. =x Coloca um if (buttonState != oldState && buttonState == 1) //ou 0 xD
Isso deve fazer funcionar xD
Ai galera,
Acho que para que o sketch do Mauro funfar é só colocar a linha do acionamento do LED dentro do if.
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;
int ledState = 0;
int oldState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState != oldState)
{
ledState=buttonState;
oldState=buttonState;
digitalWrite(ledPin, ledState);
}
}
Tentem ai pra ver se agora dá certo.
Abraço
não funcionou, o LED fica ligado apenas no instante em que é apertado o botão
Tenta este, aqui funcionou, toda vez que a chave vai de 0V para +5v o led muda de estado.
/*
Montar o circuito:
* pushbutton ligado entre o pino 2 e o +5V
* resistor de 10k ligado entre o pino 2 e o GND
* LED ligado entre o pino 13 e o GND
*/
const int buttonPin = 2;
const int ledPin = 13;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
delay(20);
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
}
}
lastButtonState = buttonState;
if (buttonPushCounter % 2 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Gerge
aqui também tem um tutorial bem detalhado sobre isso:
http://www.youtube.com/watch?v=_LCCGFSMOr4&feature=results_vide...
Este Jeremy tem ótimos tuturiais, mesmo se não entende bem inglês, como ele mostra o código, fica fácil.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por