Hey everyone. Is your alarm effective? Do you feel that you have to wake up immediately after the alarm rings but you just press the snooze button? Do you not hear the alarm when your in sleep?I was one of them and I thought of a effective alarm that instantly wakes you up and I finally got the idea. Before I start the project don’t forget to press the follow and respect button also comment your opinions and consider hiring me in this link for your future projects.
https://www.freelancer.in/hireme/pranavmadhavaram
coming back to the project the way is to make a way that it pour water on your face.
Connections:
Connect LCD to LCM 1602 IIC
Gnd of LCM 1602 IIC to gnd
Vcc of LCM 1602 IIC to 5V
Sca of LCM 1602 IIC to A1
Scl to
of LCM 1602 IIC `to A0
Code:
#include <Wire.h>
#include <RTClib.h>
#include<LiquidCrystal_I2C.h>
//************************************//
LiquidCrystal_I2Clcd(0x27, 20, 4); // Display I2C 20 x 4
RTC_DS1307 RTC;
//************Button*****************//
int P1=6; // Button SET MENU'
int P2=7; // Button +
int P3=8; // Button -
int P4=9; // SWITCH Alarm
//**************Alarm***************//
#define LED 13
#define dc water pump 10
//************Variables**************//
int hourupg;
int minupg;
int yearupg;
int monthupg;
int dayupg;
int menu =0;
int setAll =0;
uint8_t alarmHours = 0, alarmMinutes = 0; // Holds the currentalarm time
void setup()
{
lcd.begin();
lcd.backlight();
lcd.clear();
pinMode(P1, INPUT_PULLUP); //https://www.arduino.cc/en/Tutorial/InputPullupSerial
pinMode(P2, INPUT_PULLUP);
pinMode(P3, INPUT_PULLUP);
pinMode(P4, INPUT_PULLUP);
pinMode(LED, OUTPUT);
pinMode(dc water pump, OUTPUT); // Set dc water pump as an output
printAllOff();
Serial.begin(9600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOTrunning!");
// Set the date and time at compile time
RTC.adjust(DateTime(__DATE__, __TIME__));
}
// RTC.adjust(DateTime(__DATE__, __TIME__)); //removing "//"to adjust the time
// The default display shows the date andtime
int menu=0;
}
void loop()
{
// check if you press the SETbutton and increase the menu index
if(digitalRead(P1)== LOW)
{
menu=menu+1;
}
if((digitalRead(P2)== LOW)&&(digitalRead(P3)== LOW))
{
DisplaySetHourAll();
DisplaySetMinuteAll();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("ALARM");
lcd.setCursor(5, 1);
lcd.print(alarmHours, DEC);
lcd.print(":");
lcd.print(alarmMinutes, DEC);
delay(1000);
lcd.clear();
}
// in which subroutine should wego?
if (menu==0)
{
DisplayDateTime(); // void DisplayDateTime
Alarm(); // Alarm control
}
if (menu==1)
{
DisplaySetHour();
}
if (menu==2)
{
DisplaySetMinute();
}
if (menu==3)
{
DisplaySetYear();
}
if (menu==4)
{
DisplaySetMonth();
}
if (menu==5)
{
DisplaySetDay();
}
if (menu==6)
{
StoreAgg();
delay(500);
menu=0;
}
delay(100);
}
void DisplayDateTime ()
{
// We show the current date andtime
DateTime now = RTC.now();
lcd.setCursor(0, 2);
lcd.print("Hour : ");
if (now.hour()<=9)
{
lcd.print("0");
}
lcd.print(now.hour(), DEC);
hourupg=now.hour();
lcd.print(":");
if (now.minute()<=9)
{
lcd.print("0");
}
lcd.print(now.minute(), DEC);
minupg=now.minute();
lcd.print(":");
if (now.second()<=9)
{
lcd.print("0");
}
lcd.print(now.second(), DEC);
lcd.setCursor(0, 1);
lcd.print("Date : ");
if (now.day()<=9)
{
lcd.print("0");
}
lcd.print(now.day(), DEC);
dayupg=now.day();
lcd.print("/");
if (now.month()<=9)
{
lcd.print("0");
}
lcd.print(now.month(), DEC);
monthupg=now.month();
lcd.print("/");
lcd.print(now.year(), DEC);
yearupg=now.year();
char DOW[][10]={"Sunday ", "Monday ", "Tuesday ", "Wednesday", "Thursday ", "Friday ", "Saturday "};
lcd.setCursor(0, 0);
lcd.print("Day : ");
lcd.print(DOW[now.dayOfTheWeek()]); // if it appears error in the code, enter the code given below
//lcd.print(DOW[now.dayOfWeek()]);
}
void DisplaySetHour()
{
// time setting
lcd.clear();
DateTime now = RTC.now();
if(digitalRead(P2)==LOW)
{
if(hourupg==23)
{
hourupg=0;
}
else
{
hourupg=hourupg+1;
}
}
if(digitalRead(P3)==LOW)
{
if(hourupg==0)
{
hourupg=23;
}
else
{
hourupg=hourupg-1;
}
}
lcd.setCursor(0, 0);
lcd.print("Set time:");
lcd.setCursor(0, 1);
lcd.print(hourupg, DEC);
delay(200);
}
void DisplaySetMinute()
{
// Setting the minutes
lcd.clear();
if(digitalRead(P2)==LOW)
{
if (minupg==59)
{
minupg=0;
}
else
{
minupg=minupg+1;
}
}
if(digitalRead(P3)==LOW)
{
if (minupg==0)
{
minupg=59;
}
else
{
minupg=minupg-1;
}
}
lcd.setCursor(0, 0);
lcd.print("Set Minutes:");
lcd.setCursor(0, 1);
lcd.print(minupg, DEC);
delay(200);
}
void DisplaySetYear()
{
// setting the year
lcd.clear();
if(digitalRead(P2)==LOW)
{
yearupg=yearupg+1;
}
if(digitalRead(P3)==LOW)
{
yearupg=yearupg-1;
}
lcd.setCursor(0, 0);
lcd.print("Set Year:");
lcd.setCursor(0, 1);
lcd.print(yearupg, DEC);
delay(200);
}
void DisplaySetMonth()
{
// Setting the month
lcd.clear();
if(digitalRead(P2)==LOW)
{
if (monthupg==12)
{
monthupg=1;
}
else
{
monthupg=monthupg+1;
}
}
if(digitalRead(P3)==LOW)
{
if (monthupg==1)
{
monthupg=12;
}
else
{
monthupg=monthupg-1;
}
}
lcd.setCursor(0, 0);
lcd.print("Set Month:");
lcd.setCursor(0, 1);
lcd.print(monthupg, DEC);
delay(200);
}
void DisplaySetDay()
{
// Setting the day
lcd.clear();
if(digitalRead(P2)==LOW)
{
if (dayupg==31)
{
dayupg=1;
}
else
{
dayupg=dayupg+1;
}
}
if(digitalRead(P3)==LOW)
{
if (dayupg==1)
{
dayupg=31;
}
else
{
dayupg=dayupg-1;
}
}
lcd.setCursor(0, 0);
lcd.print("Set Day:");
lcd.setCursor(0, 1);
lcd.print(dayupg, DEC);
delay(200);
}
void StoreAgg()
{
// Variable saving
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SAVING IN");
lcd.setCursor(0, 1);
lcd.print("PROGRESS");
RTC.adjust(DateTime(yearupg, monthupg, dayupg, hourupg, minupg, 0));
delay(200);
}
void DisplaySetHourAll()//Setting the alarm minutes
{
while(digitalRead(P1)==HIGH){
lcd.clear();
if(digitalRead(P2)==LOW)
{
if(alarmHours==23)
{
alarmHours=0;
}
else
{
alarmHours=alarmHours+1;
}
}
if(digitalRead(P3)==LOW)
{
if(alarmHours==0)
{
alarmHours=23;
}
else
{
alarmHours=alarmHours-1;
}
}
lcd.setCursor(0, 0);
lcd.print("Set HOUR Alarm:");
lcd.setCursor(0, 1);
lcd.print(alarmHours, DEC);
delay(200);
}
delay(200);
}
void DisplaySetMinuteAll()//Setting the alarm minutes
{
while(digitalRead(P1)==HIGH){
lcd.clear();
if(digitalRead(P2)==LOW)
{
if (alarmMinutes==59)
{
alarmMinutes=0;
}
else
{
alarmMinutes=alarmMinutes+1;
}
}
if(digitalRead(P3)==LOW)
{
if (alarmMinutes==0)
{
alarmMinutes=59;
}
else
{
alarmMinutes=alarmMinutes-1;
}
}
lcd.setCursor(0, 0);
lcd.print("Set MIN. Alarm:");
lcd.setCursor(0, 1);
lcd.print(alarmMinutes, DEC);
delay(200);
}
delay(200);
}
void printAllOn(){
lcd.setCursor(0, 3);
lcd.print("Alarm: ");
if (alarmHours <= 9)
{
lcd.print("0");
}
lcd.print(alarmHours, DEC);
lcd.print(":");
if (alarmMinutes <= 9)
{
lcd.print("0");
}
lcd.print(alarmMinutes, DEC);
}
void printAllOff() {
lcd.setCursor(0, 3);
lcd.print("Alarm: Off ");
}
void Alarm(){
if(digitalRead(P4)== LOW)
{
setAll=setAll+1;
}
if (setAll==0)
{
printAllOff();
noTone (dc water pump);
digitalWrite(LED, LOW);
}
if (setAll==1)
{
printAllOn();
DateTime now = RTC.now();
if ( now.hour() == alarmHours &&now.minute() == alarmMinutes )
{
lcd.noBacklight();
DateTime now = RTC.now();
digitalWrite(LED, HIGH);
tone(dc water pump, 880); //play thenote "A5" (LA5)
delay (300);
tone(dc water pump, 698); //play the note"F6" (FA5)
lcd.backlight();
}
else{
noTone (dc water pump);
digitalWrite(LED, LOW);
}
}
if (setAll==2)
{
setAll=0;
}
delay(200);
}
ADVERTIZEMENT:
**********************Don’t skip**************************
Are you interested in making your own arduino project and rely on mysources.
If you rely on my sources then you might have your own ideas thatneither I have not uploaded or nor others. So you might leave the hopes oncompleting that project. But there is no need for youas I will help you outpersonally. Yes you heard it right. I will complete your project. All you needis just to press this link.
https://www.freelancer.in/hireme/pranavmadhavaram
*****************advertisementcompleted******************
How to operate:
The activation and deactivation of the alarm clock is controlled by the"P4" button, line 444 "void Alarm()".
To enter the alarm settings, you must use the "P3" "P2"buttons together, line 81:
When the alarm is not set, the bottom of the display will show "Alarm Off"when the alarm is active, it shows the time that has been set. At the scheduled time, the display flashes, the LED lights up, and the buzzer sounds two tones.
To turn off the alarm, you have to act on the P4 button, or, after a minute, it turns off alone.
Comments
Please log in or sign up to comment.