Gostaria de fazer com que quando pressionasse o botão, acendesse o led e ficasse aceso ate que o mesmo botão fosse pressionado, alguém sabe qual alteração deve ser feita no seguinte código?

const int led = 8;
const int botao = 2;
int estadoBotao = 0;

void setup() {
pinMode(led,OUTPUT);
pinMode(botao,INPUT);

Serial.begin(9600);
}
void loop() {
estadoBotao = digitalRead(botao);

if (estadoBotao == 1) {
digitalWrite(led,HIGH);
Serial.print("Aceso \n");
} else {
digitalWrite(led,LOW);
Serial.print("Apagado \n");
}
delay(10);
}

Exibições: 7375

Responder esta

Respostas a este tópico

Ola amigo, testa este ai pra ve se ta como vc quer.

 

 

const int led = 8;
const int botao = 2;
int estadoBotao = 0;

void setup() {
pinMode(led,OUTPUT);
pinMode(botao,INPUT);

Serial.begin(9600);
}
void loop() {


if (digitalRead(botao) == HIGH)
{ estadoBotao = !estadoBotao;}

 

if(estadoBotao == 1)

{
digitalWrite(led,HIGH);
Serial.print("Aceso \n");

}

if(estadoBotao == 0)

{
digitalWrite(led,LOW);
Serial.print("Apagado \n");
}
delay(700);// Este tempo não pode ser pequeno pois ele pode ler o botão varias vezes quando na verdade vc aperto somente uma vez.
}

Deu certo, obrigado!

cara, achei esse codigo aqui na NET: 

int led=13;      // led no pino 13
int botao=12;  // botão no pino 12
int var=0;       // valor instantaneo enviado pelo botão
int var2=0;     // valor guardado
int estado=0;  // guarda o valor 0 ou 1 (HIGH ou LOW)

void setup()
{
  pinMode(led,OUTPUT);
  pinMode(botao,INPUT);
}

void loop()
{
  var=digitalRead(botao); // ler o valor enviado pelo botão: "HIGH" ou "LOW"

  if ((var == HIGH) && (var2 == LOW)) {
    estado = 1 - estado;
    delay(20); // de-bouncing
  }

  var2=var;
  if (estado == 1) {
    digitalWrite(led, HIGH); // liga o led
  } else {
    digitalWrite(led, LOW);  // desliga o led
  }
}

int state = 0; // variable for reading the pushbutton status
int led = 0;

void setup() {
pinMode(13, OUTPUT);
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);
}
}

Boa tarde amigo, tenta esse código aqui, veja se há nescessidade de complemento ok ?

int led=5; // led no pino 13
int botao=7; // botão no pino 12
int var=0; // valor instantaneo enviado pelo botão
int var2=0; // valor guardado
int estado=0; // guarda o valor 0 ou 1 (HIGH ou LOW)
void setup()
{
pinMode(led,OUTPUT);
pinMode(botao,INPUT);
}
void loop()
{
var=digitalRead(botao); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((var == HIGH) && (var2 == LOW)) {
estado = 1 - estado;
delay(20); // de-bouncing
}
var2=var;
if (estado == 1) {
digitalWrite(led, HIGH); // liga o led
} else {
digitalWrite(led, LOW); // desliga o led
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço