Pessoal, estou com uma dúvida que acredito que a sloução é bem simples.
Estou começando em PIC e estou querendo fazer o seguinte: ao segurar pressionado uma tecla por 3 segundos, o programa chama uma função. Depois de entrar nessa função, eu preciso pressionar novamente a tecla para sair da mesma e voltar no programa principal
Já tentei fazer o seguinte:
if (button (&portb, 1,3000,1))
{
funcao();
}
Mas não deu certo. Ele não espera os 3 segundos pra chamar a função. Faz isso de maneira muito rápida.
Alguém tem alguma sugestão?
Estou usando o MikroC PRo.
Abraços
Tags:
Você pode usar a seguinte lógica:
Enquanto pressionada a tecla, uma variável chamada cont incrementa de 30 em 30 e confere se a tecla ainda está sendo pressionada de 10 em 10 ms. Se cont==300 terão passados 3 segundos com a tecla pressionada
Usando o compilador CCS o código poderia ser assim:(Estou chamando o botão de b1)
.
.
.
long int cont=0;
while(b1) //ENQUANTO EU PRESSIONO O BOTÃO
{
cont=cont+30; //INCREMENTA A VARIÁVEL
delay_ms(10); //DE 10 EM 10 MS
if(cont==300) //SE CONT FOR IGUAL A 300
{funcao();} //ENTRA NA FUNÇÃO
}
cont=0; //SE TIRAR O DEDO DO BOTÃO, SAI DO LAÇO DE REPETIÇÃO E ZERA A VARIAVEL
.
.
.
Como você está usando o delay e testando uma condição (com o IF) dentro de um laço de repeticao (WHILE) Vai ser um pouco mais do que 3 segundos. Pouquíssimo dependendo da eletrônica
Vê se da certo aí. Essa parte de pressionar a tecla pra sair, você pode fazer de várias maneiras, vai depender do que você está fazendo dentro da funcão.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por