Project Arduino - Tutorial Membuat Alarm dengan Arduino

15.29.00

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

http://fritzing.org/projects/alarm-clock

Sourcefrom: https://create.arduino.cc/projecthub/tittiamo68/alarm-clock-f61bad?ref=platform&ref_id=424_trending___&offset=42

Previous
Next Post »
0 Komentar

Berkomentarlah dengan sopan dan menggunakan bahasa yang semestinya.

Diberdayakan oleh Blogger.