Caros amigos, estou com uma dúvida no seguinte caso:
Tenho um programa rodando executando uma ação quando um botão é pressionado e gostaria de poder interromper essa ação através do mesmo botão.
Exemplo:
ao acionar um botão tenho uma porta com nivel alto durante um periodo, porém quero que a qualquer momento que eu pressione novamente esse botão ele coloque a porta em nivel baixo.
no meu caso eu estou empacado no processo
void setup(){
pinMode (13,OUTPUT); // porta 13 definida como saida
pinMode (10,INPUT); // porta 10 definida como entrada
digitalWrite(10,1); // ativação do pullup interno do atmega
}
void loop(){
int leitura = digitalRead (10); // monitora estado da porta 10
if (leitura == 0){ func_liga(); // condição para desvio para função liga
// digitalWrite (13,1) ;// desabilitado
//delay (15000); // desabilitado
}
else
{digitalWrite(13,0); //mantem porta 13 desligada
}
}
void func_liga() // função liga
{
digitalWrite(13, HIGH); //ativa porta 13
delay (15000); // tempo de 15 segundo
}
o programa está funcionando, mas imaginei que como desviei p/ uma função que o arduino ficaria no loop monitorando o estado do botão (10), mas isso não aconteceu.
Alguem tem um caminho p/ mim?
Abraços
Sanches
Tags:
Até onde eu sei, arduino não suporta multiplas tarefas.
Mas no teu caso, acho que é só interrupção mesmo.
Tem um post aqui, vê se te ajuda: Tutorial sobre Interrupções no Arduino
Olha, estou com o mesmo problema.
Vc deverá usar a função blink without delay.
Dá uma estudada nisso.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por