Bom dia pessoal, preciso fazer o seguinte. Um sensor, quando detecta a presença de um objeto, muda de 1 para 0 o seu nível lógico, quando essa mudança acontece, imediatamente chama-se uma função do tipo void(). Esse sensor vai continuar enviando nível lógico 0 até que a função termine e outro objeto seja retirado e outro colocado, pra iniciar o processo novamente. Dá pra entender?
Quando o objeto foi retirado, vai de 0 pra 1, e não acontece nada, quando outro é colocado no lugar, vai de 1 pra 0 e chama a função novamente.
Usei o seguinte protótipo, bem fuleiro e não deu certo.
void função() {
executa a função quando o objeto for detectado
}
loop() {
if(digitalRead(sensor)==HIGH) { // Se estão ALTO
if(digitalRead(sensor)==LOW) função(); // e vai pra baixo chama a função
}
else { } // Se ainda está baixa não faz nada
Alguma ideia pra melhorar isso?
Tags:
RMM, bom dia,
use um flag pra indicar que tinha um objeto na frente do sensor.
Testa este code:
Rui
Deu certinho meu caro! Te devo mais uma.
Sem querer abusar mas já abusando, só teve um pequeno problema: bouce
Como faço pra colocar um debounce do sensor? Pois algumas vezes quando o sensor volta pra 1 ele chama a função sem poder.
Resolvido, Valeu!!!
Pessoal, bom dia!
Nesse caso poderia ser usada uma interrupção também usanso o modo FALLING (HIGH to LOW)) ?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por