Boa Noite galera.
a duvida é o seguinte:
quando eu aperto o botão acende a led e começa a piscar e quando eu aperto o mesmo botão o led apaga. Só que quando eu aperto para apagar o led tem que ser no exato momento em que o programa passa do delay(); para a leitura do botão. tem lgum jeito de isso acontecer a qualquer momento do programa?
segue abaixo o sketch
int led=13; // led no pino 13
int botao=12; // botão no pino 12
int var; // valor instantaneo enviado pelo botão
int var2; // valor guardado
int estado=0; // guarda o valor 0 ou 1 (HIGH ou LOW)
void setup()
{
Serial.begin(9600);
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(200); // de-bouncing
Serial.println(estado);
}
var2=var;
if (estado == 1) {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
} else {
digitalWrite(led, LOW); // desliga o led
}
}
Muito Obrigado
Tags:
para solucionar o problema vc tem que retira os delay e utiliza por exemplo a função mills()
no site e na ide tem um exemplo http://arduino.cc/en/Tutorial/BlinkWithoutDelay
valeu, vou tentar e depois eu comento
Testa Assim
int led=13; // led no pino 13
int botao=12; // botão no pino 12
int var; // valor instantaneo enviado pelo botão
int var2; // valor guardado
int estado=0; // guarda o valor 0 ou 1 (HIGH ou LOW)
int ledState = LOW;
unsigned long previousMillis = 0;
void setup()
{
Serial.begin(9600);
pinMode(led,OUTPUT);
pinMode(botao,INPUT_PULLUP);
}
void loop()
{
var=digitalRead(botao); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((var == HIGH) && (var2 == LOW))
{
estado = 1 - estado;
delay(100); // de-bouncing
Serial.println(estado);
}
var2=var;
if (estado == 1) {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > 1000) {
previousMillis = currentMillis;
if (ledState == LOW){ledState = HIGH;} else { ledState = LOW;}
digitalWrite(led, ledState);
}
} else {
digitalWrite(led, LOW); // desliga o led
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por