Olá meu amigo, poderia me ajudar com uma duvida relativamente simples?
Tenho este projeto simples na imagem em anexo.
O funcionamento é simples: Quando pressionamos o botão uma vez, o led pisca duas vezes.
O problema é que se mantivermos o botão pressionado, o led vai ficar piscando direto pois a programação se repete.
Como eu poderia fazer pra que a programação fosse executada apenas uma vez mesmo se mantivermos o botão pressionado e só se repita se soltarmos o botão e pressionarmos de novo?
Abaixo vou postar o código em CCS C Compiler.
#include <main.h>
void main()
{
while(TRUE)
{
if( input(pin_a0 )==0){
delay_ms(400);
output_high(pin_a5);
delay_ms(80);
output_low(pin_a5);
delay_ms(600);
output_high(pin_a5);
delay_ms(80);
output_low(pin_a5);
}
}
}
Se não tiver problema que a rotina fique presa até soltar o botão, basta acrescentar um teste do botão a mais. Se ele continuar apertado depois de executar as piscadas fica aguardando ser solto. O delay é para evitar o efeito de debounce (repique da chave) e evitar entrar na rotina uma segunda vez. Veja abaixo:
#include <main.h>
void main()
{
while(TRUE)
{
if( input(pin_a0 )==0){
delay_ms(400);
output_high(pin_a5);
delay_ms(80);
output_low(pin_a5);
delay_ms(600);
output_high(pin_a5);
delay_ms(80);
output_low(pin_a5);
while(input(pin_a0)==0)delay_ms(80);//acrescentar para debouce do botão
}
}
}
Obrigado mais uma vez Cláudio. Funcionou perfeitamente como eu queria. Forte abraço.