Detectando o longo estado de imprensa do botão
Para adicionar a funcionalidade do botão para funcionar quando ele é pressionado por um longo tempo, criamos um circuito simples cujo esquema de circuito é dado abaixo, seguido pelos componentes que usamos para fazer o circuito.
Conjunto de hardware para detectar o longo estado de imprensa do botão
Para ver como será o circuito no hardware real, fizemos o conjunto de hardware que é dado abaixo na imagem.
Como você pode ver na imagem acima, usamos o pino 8 do Arduino para conectá -lo ao botão de pressão usando o fio verde e usando o fio preto para conectar o botão de pressão com o pino de arduino.
Código Arduino para detectar o longo estado de imprensa do botão
Para detectar a longa pressão do botão, programamos o microcontrolador usando a função Millis (). Detectamos o estado de imprensa longo, conseguindo o tempo para o qual o estado do botão de pressão permaneceu alto e baixo. Depois disso, calculamos a duração pela qual o botão foi pressionado e depois o comparamos com algum valor de tempo constante com base nisso, podemos dizer que o botão foi pressionado por um longo tempo.
Nesse caso, damos o valor de tempo constante de um segundo que é 1000 milissegundos como a curta pressionada para o botão. Se a duração da pressão for mais do que o tempo para o curto período de imprensa, será considerado como a imprensa longa e será exibida no monitor serial. Abaixo, demos o esboço do Arduino usado para programar o controlador para detectar o estado de imprensa longo do botão.
Int Button = 8; /* Pino Arduino para o botão de pressão*/
int curto_time = 1000; / * Tempo que será considerado como o curto tempo de imprensa */
long on_duration;/ * variável que armazenará o valor do tempo para o qual o botão é pressionado */
int anteriorstate = baixo; / * Definindo o estado inicial do botão de pressão alto, pois estamos usando o modo input_pullup */
int presentestate; /* Variável que armazenará o estado atual se o botão*/
não assinado long Press_time = 0; / * Tempo em que o botão foi pressionado */
Long release_time não assinado = 0;/ *tempo em que o botão é liberado */
Void Setup ()
Serial.BEGIN (9600);/* Dando a taxa de transmissão para comunicação serial*/
pinmode (botão, input_pullup);/* dando o modo de trabalho para o botão de pressão que é input_pullup (inverte as entradas do botão)*/
Void Loop ()
// Leia o estado do interruptor/botão:
presentestate = digitalRead (botão);/ * Obtendo o estado atual do botão de pressão */
if (anteriorstate == High && presentestate == Low) / * se o botão for pressionado * /
press_time = millis ();/ * salve o tempo em milissegundos usando a função millis */
caso contrário, if (anteriorstate == low && presentestate == alta) /* se o botão for liberado* /
release_time = millis ();/ * salve o tempo em que o botão foi liberado */
long on_time = release_time - press_time;/* calculando o tempo para o qual o botão permaneceu no estado baixo*/
se (on__time> short_time) /* comparando o valor do tempo para o qual o botão é pressionado ao valor por um curto tempo de imprensa* /
Serial.println ("O botão é pressionado por um longo tempo");/ * Imprimindo os dados no monitor serial */
anteriorstate = presentestate;/ * salvando o valor presente no valor anterior */
Demonstração de hardware
Fizemos o circuito no hardware de acordo com o conjunto de hardware que é discutido anteriormente, e a imagem abaixo mostra a implementação de hardware do circuito de botão para detectar o estado de imprensa longo do botão.
Quando pressionamos o botão por mais de um segundo, o código Arduino mostra no monitor serial que o botão é pressionado por muito tempo, como mostrado na imagem abaixo:
Conclusão
O significado de usar o estado de imprensa longo do botão é que você pode usar um único botão para executar mais de uma tarefa. Então, para explicar como detectar o estado de imprensa longo do botão, projetamos um circuito e o implementamos no hardware real e também fornecemos o esboço do Arduino que fornecerá uma ótima subestimação do tópico.