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:
Permalink Responder até Gustavo Frainer em 24 setembro 2012 at 19:53
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
Permalink Responder até Sidney Alves Bastos em 24 setembro 2012 at 22:43
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)
Por: R$ 29,00
Ou em até 6x de
R$ 5,18
Por: R$ 54,00
Ou em até 12x de
R$ 5,10
Por: R$ 195,00
Ou em até 18x de
R$ 13,00
Válvula Solenóide de 12V - 3/4"
Por: R$ 36,00
Ou em até 7x de
R$ 5,56
© 2013 Criado por Marcelo Rodrigues.