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?

Exibições: 728

Responder esta

Respostas a este tópico

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.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço