good evening all,
i have an issue with my alarm clock arduino......
i have built a project with an alarm clock with arduino ..... i am using ds1307 with arduino and an 1602 display ...... and also a buzzer
what i encounter is tha the clock is working and i get an alarm at 10 minutes but not at 15 minutes, and at 18 minutes.....
ty in advance
here is my code
// arduino clock reminder
// 25-04-2024
#include "Arduino.h"
#include "uRTCLib.h"
#include <SPI.h>
#include <LiquidCrystal.h>
// uRTCLib rtc;
uRTCLib rtc(0x68);
const int rs = 7, en = 8, d4 = 2, d5 = 3, d6 = 4, d7 = 5;
const int buzzer=6;
int alarm;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
pinMode(buzzer,OUTPUT);
Serial.begin(9600);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Arduino");
lcd.setCursor(0,1);
lcd.print("clock");
for (int i=1;i<=10;i++)
{
for (int g=1;g<=50;g++){
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,LOW);
delay(1);
}
}
delay(2000);
lcd.clear();
// set time for first time
// rtc.set(0, 22, 1, 6, 25, 4, 24);
// RTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
}
void loop() {
rtc.refresh();
lcd.setCursor(0,0);
lcd.print(rtc.hour());
lcd.print(":");
lcd.print(rtc.minute());
lcd.print(":");
lcd.print(rtc.second());
lcd.setCursor(0,1);
lcd.print(rtc.day());
lcd.print("/");
lcd.print(rtc.month());
lcd.print("/");
lcd.print(rtc.year());
lcd.setCursor(10,0);
lcd.print(alarm);
lcd.setCursor(9,1);
lcd.print("MINUTES");
if (rtc.second()==59)
{
alarm=alarm+1;
lcd.setCursor(10,0);
lcd.print(alarm);
lcd.setCursor(9,1);
lcd.print("MINUTES");
}
// alarms
if (alarm==10)
{
for (int i=1;i<=10;i++)
{
for (int g=1;g<=60;g++){
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,LOW);
delay(1);
}
}
}
if (alarm==15)
{
for (int i=1;i<=10;i++)
{
for (int g=1;g<=30;g++)
{
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,HIGH);
delay(1);
}
}
}
if (alarm==18)
{
for (int i=1;i<=10;i++)
{
for (int g=1;g<=10;g++)
{
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,HIGH);
delay(1);
}
}
}
delay(1000);
}