Arduino como executar uma tarefa em segundo plano e monitorar outra ação.

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

Exibições: 1315

Responder esta

Respostas a este tópico

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.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço