Arduino Self Timer

Tempo de leitura: 2 minutes

O projeto “Arduino Self-Timer” apresentado aqui é um temporizador de contagem regressiva de 60 segundos com baixa contagem de componentes. Ele pode ser alimentado por uma bateria compacta de 9 V ou adaptador de corrente Arduino AC adequado. O funcionamento do circuito é simples!

Esquema do circuito do temporizador Arduino

Quando você pressiona o botão RESET na placa Arduino, o cronômetro fará uma contagem regressiva de 60 segundos, conforme programado. Assim que a contagem regressiva do cronômetro chegar a 0 segundos, o PIEZO-BUZZER (BZ1) irá acender e o display LCD piscará “TIMER ALERT!”. Uma saída de driver RELAY opcional está disponível no pino 4 da placa Arduino. Se desejar adicionar um relé eletromagnético para desligar/ligar qualquer carga elétrica externa, basta usar esta saída para acionar o relé eletromagnético com a ajuda de um circuito acionador de relé baseado em transistor adequado. Observe que o programa do cronômetro é zerado toda vez que você pressiona o botão RESET e a contagem regressiva do cronômetro começa novamente.

 

Fotos

 

Arduino Sketch

//Arduino Self-Timer
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,8,9,10,11,12);
int runTimer = 1; 
int runFor = 60; // tempo em segundos
int buzzerPin = 13;
int relayPin=4;
int data = 0;

void setup() {
   pinMode(buzzerPin, OUTPUT);
   pinMode(relayPin,OUTPUT);
   lcd.begin(16, 2);
}

void loop() {
   if(runTimer == 1){ 
      digitalWrite(relayPin,LOW); // relé está DESLIGADO durante a contagem regressiva
      /* mude para ALTO se quiser que o relé esteja LIGADO durante a contagem regressiva */
      lcd.clear();
      lcd.print("TIMER=");
      //Iniciar cronômetro
      timer(); 
   } else {
      digitalWrite(relayPin,HIGH); // relé está LIGADO quando o tempo expirou
      /* mude para BAIXO se quiser que o relé esteja DESLIGADO quando o tempo expirar */
   }
   runTimer = 0;
   lcd.noDisplay();
   delay(250);
   for(int duration = 0; duration < 100; duration ++){
      digitalWrite(buzzerPin, HIGH);
      delayMicroseconds(500);
      digitalWrite(buzzerPin, LOW);
      delayMicroseconds(500);
   } 
   lcd.display();
   delay(250);
}

void timer() {
   for(int timer = runFor;timer > 0; --timer){
   if(timer >= 10) {
      lcd.setCursor(6,0); 
   } else {   
      lcd.setCursor(6,0);
      lcd.print("0");
      lcd.setCursor(7,0);
   }
   lcd.print(timer);
   lcd.print(" SECOND!");
   delay(1000);
   }
   lcd.setCursor(0,0);
   lcd.clear();
   lcd.print(" TIMER ALERT!");  
}