Bom dia pessoal,

Preciso de uma função que funcione da seguinte maneira: ao pressionar um botão ele retém a informação ("1") por determinado tempo aguardando que um segundo botão seja pressionado. Caso esse segundo botão não seja pressionado durante um tempo X, a saída vai para 0. Caso o segundo botão seja pressionado dentro do tempo X, a saída vai a 1.

Não consegui fazer isso no meu código... 

Exibições: 674

Responder esta

Respostas a este tópico

Já li as referências, mas tenho dificuldade em trabalhar com Millis() ainda...

Márcio, informe qual a sua dúvida para  que a equipe de plantão explique tudo .

Para aprender e nessa situação que o Marcio precisa pode ser extremamente útil.

Dá uma lida nesse segundo link que o Murta enviou, dá para aplicar de uma forma bem eficiente.

No lugar de um push-button para ligar um pino, fazer um digital-read para testar se o botão foi pressionado, etc, etc... como eu fiz no exemplo que lhe enviei, você pode ligar essa função que o Murta comentou:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);

Vou verificar amanhã e retorno.

Pessoal, eis o meu código atual: http://pastebin.com/wCkTYBgu

Preciso ainda implementar a lógica que quero (descida de rampa): quando o SS2 for pressionado, espera-se que o SS1 seja pressionado dentro de 10s. Se não for, o estado de SS2 volta a zero e nada acontece. Se for pressionado, tenho a função lverde chamada.

Outra (agora em caso de subida na rampa): quando eu ativar SS1, espera-se que eu passe por SS2 e chegue a SS3 dentro de 30 segundos. No meu código atual, ao pisar em SS1 o semáforo já vai a vermelho. O que quero nesse trecho é que se ao passar por SS1, SS3 não for ativo dentro de 30seg, a função lverde seja chamada, normalizando o semáforo para verde e desativando o efeito antes ativo pelo SS1.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço