Tentang Projek ini
Setelah merancang “Clock Set Date Time” dan mendengar saran dari ArduPic, saya pikir itu akan menjadi ide yang bagus dan juga berguna, tambahkan “alarm bangun.” Perubahan kecil pada kode dan menambahkan beberapa komponen: Inilah “Jam Alarm”.
Dibandingkan dengan proyek sebelumnya, saya menambahkan buzzer Piezzo, LED dioda, resistor 220 ohm, tombol dan sepertiyang dikatakan sebelumnya, saya mendengarkan saran “ArduPic” dan saya menghilangkan resistansi untuk “menarik ke bawah.”
Komponen yang Dibutuhkan
- Arduino UNO
- Real Time Clock
- Adafruit Standard LCD – 16×2 White on Blue
- SparkFun Pushbutton switch 12mm
- LED (generic)
- Resistor 221 ohm
- Buzzer
- Jumper wires (generic)
Arduino Code
Untuk menghapus resistensi “tarik ke bawah”, saya harus membuat perubahan pada kode.
Gunakan resistor pullup arduino, dan balikkan kondisi logika kode.
pinMode(P1,INPUT_PULLUP);pinMode(P2,INPUT_PULLUP);pinMode(P3,INPUT_PULLUP);pinMode(P4,INPUT_PULLUP);if(digitalRead(P1)==LOW){menu=menu+1;
Alarm Code
Aktivasi dan penonaktifan jam alarm dikendalikan oleh tombol “P4”, baris 444 “void Alarm()”.
Untukmasuk ke pengaturan alarm, Anda harus menggunakan tombol “P3” “P2” bersama-sama, baris 81
if((digitalRead(P2)== LOW) && (digitalRead(P3)== LOW))
Ketika alarm tidak disetel, bagian bawah layar akan menampilkan “Alarm Mati” ketika alarm aktif, itu menunjukkan waktu yang telah disetel. Pada waktu yang dijadwalkan, layar berkedip, LED menyala, dan buzzer membunyikan dua nada.
Untuk mematikan alarm, Anda harus bertindak pada tombol P4, atau, setelah satu menit, itu mati sendirian. Saya memasang skema listrikdan tata letak Fritzing.
Code
Kode yang digunakan untuk Alarm :
/*:Project:Allarm_Clock:Author: Tiziano Bianchettin:Date: 10/02/2017:Revision: 2:License: Public Domainthanks to: http://arduinoenonsolo.blogspot.it/2012/12/orologio-con-arduino-e-il-ds1307.html http://www.mauroalfieri.it/ http://www.danielealberti.it/ http://www.maffucci.it/ My electronics laboratory professor "Perito Carli" *///************libraries**************//#include#include #include //************************************//LiquidCrystal_I2C lcd(0x27,20,4); // Display I2C 20 x 4RTC_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 buzzer 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 current alarm timevoid 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(buzzer, OUTPUT); // Set buzzer as an output printAllOff(); Serial.begin(9600); Wire.begin(); RTC.begin(); if (! RTC.isrunning()) { Serial.println("RTC is NOT running!"); // 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 and time int menu=0;} void loop(){ // check if you press the SET button 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 we go? 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 and time 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 (buzzer); 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(buzzer,880); //play the note "A5" (LA5) delay (300); tone(buzzer,698); //play the note "F6" (FA5) lcd.backlight(); } else{ noTone (buzzer); digitalWrite(LED,LOW); } } if (setAll==2) { setAll=0; } delay(200);}
Schematics
electric schematic
Kalian bisa download disini :https://hacksterio.s3.amazonaws.com/uploads/attachments/258548/alarm_clock_5KZ82y7hnm.jpg
Fritzing Scheme Jpg
Kalian bisa download disini :https://hacksterio.s3.amazonaws.com/uploads/attachments/258547/allarm_clock_bb_cfGmNpJ5c9.jpg
Fritzing scheme
Kalian bisa download disini :
https://hacksterio.s3.amazonaws.com/uploads/attachments/258549/alarm_clock_cctp6USVTx.fzz
Fritzing Scheme link
0 Komentar
Berkomentarlah dengan sopan dan menggunakan bahasa yang semestinya.