Botão
O botão é ligado a uma entrada digital (P3) do Franzinho, a outra ponta é ligada ao terra. Ativando o "pull-up" interno, a entrada digital será lida em nível alto quando o botão estiver solto e nível baixo quando o botão estiver apertado.
Relê
Vamos usar apenas um dos relês do módulo, conectanto P0 do Franzininho ao IN1 do módulo. O jumper de JD-VCC deve ficar na posição normal (conectando JD-VCC a VCC). O VCC do módulo é ligado ao VCC do Franzininho e o GND do modulo ao GND do Franzininho.
Potenciômetro
Usei um potenciômetro linear de 10K, pode ser usado outro valor ente 1K e 100K. Os extremos do potenciômetro são ligados a VCC e GND. O contato central é ligado à entrada A1 do Franzininho.
Montagem
Juntando em uma figura as instruções acima:
Código
O código é bastante simples. O loop consiste em:
- Esperar o botão ser apertado (entrada digital 3 ficar com nível baixo)
- Ler a entrada analógica A1. O valor lido estará entre 0 e 1023, dependendo da posição do potenciômetro
- Esperar o botão ser solto (entrada digital 3 ficar com nível alto)
- Acionar o rele (nível baixo na saída digital P0)
- Aguardar um tempo proporcional à leitura do potenciômetro. No me código aguardo 10*60*leitura milisegundos+1000. Em extremo (leitura = 0) o tempo será 1 segundo; no outrol (leitura = 1023), o tempo será aproximadamente 10 minutos.
- Desligar o rele (nível alto na saída digital P0).
- /*
- * Temporizador
- * DQ - 18/02/18
- */
- // Pinos utilizados
- const int pinTecla = 3;
- const int pinRele = 0;
- const int pinPot = A1;
- void setup() {
- // Iniciação do relê
- // Nível alto no pino = relê desligado
- pinMode (pinRele, OUTPUT);
- digitalWrite(pinRele, HIGH);
- // Iniciação do botão
- pinMode (pinTecla, INPUT_PULLUP);
- // Iniciação do potenciômetro
- analogReference(DEFAULT);
- }
- void loop() {
- // Espera apertar o botão
- while (digitalRead(pinTecla) == HIGH) {
- delay(10);
- }
- // Lê o potenciômetro
- int pot = analogRead(pinPot);
- // Espera soltar o botão
- while (digitalRead(pinTecla) == LOW) {
- delay(10);
- }
- // Aciona o relê por um tempo proporcional à leitura
- long tempo = 10L*60L*pot + 1000L;
- digitalWrite(pinRele, LOW);
- delay (tempo);
- digitalWrite(pinRele, HIGH);
- }
Vídeo
O vídeo abaixo mostra a montagem funcionando.
Nenhum comentário:
Postar um comentário