Talaan ng mga Nilalaman:
- Hakbang 1: Mga Tagubilin sa Hookup
- Hakbang 2:
- Hakbang 3:
- Hakbang 4:
- Hakbang 5:
- Hakbang 6:
- Hakbang 7:
- Hakbang 8:
- Hakbang 9: Mga Tagubilin sa Programming
- Hakbang 10:
- Hakbang 11:
- Hakbang 12:
- Hakbang 13:
- Hakbang 14:
Video: Arduino Alarm Clock Project: 14 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Sa proyektong ito, gagamitin namin ang Arduino Uno upang makontrol ang isang LCD screen upang maipakita ang kasalukuyang oras at oras na itinakda para sa isang alarma. Gumagamit kami ng mga pindutan upang maitakda sa bawat oras.
Mga Materyales:
- Arduino Uno -
- Breadboard -
- Jumper Wires (x13 +) -
- 10 kohm resistors (x4) -
- LCD screen -
- 7 Mga Pindutan -
- Piezo Speaker -
Hakbang 1: Mga Tagubilin sa Hookup
1. Ikonekta ang isang jumper wire mula sa 5V pin sa Arduino sa isa sa mga + riles sa breadboard.
Hakbang 2:
2. Ikonekta ang isang jumper wire mula sa pin ng GND sa Arduino patungo sa - riles sa tabi ng + riles na iyong pinili sa breadboard.
Hakbang 3:
3. Ikonekta ang LCD screen sa lakas, lupa, at ang TX pin (pin 1).
Hakbang 4:
4. Ilagay ang 7 mga pindutan sa breadboard na may mga binti sa kabuuan ng puwang sa breadboard.
Hakbang 5:
5. Maglagay ng 10 kohm resistors mula sa - riles na may koneksyon na GND na nakakonekta dito sa ibabang kaliwang mga pin ng mga pindutan.
Hakbang 6:
6. Ilagay ang mga wire ng jumper sa pagitan ng kanang kanang pin ng mga pindutan at ang 5V rail sa iyong breadboard.
Hakbang 7:
7. Ilagay ang mga wire ng jumper sa pagitan ng mga pin 6, pagkatapos ay 8-13, at ang pin sa pindutan na konektado ang risistor.
Hakbang 8:
8. Susunod, ilagay ang iyong Piezo speaker sa breadboard at ikonekta ang pin 7 sa power pin, pagkatapos ay isang resistor na 100 ohm sa lupa.
Hakbang 9: Mga Tagubilin sa Programming
1. Pangkalahatang-ideya: Hihilingin sa proyektong ito ang gumagamit na itakda ang kasalukuyang oras sa paunang kapangyarihan sa pagpapakita ng kasalukuyang oras at ang oras na itinakda ang alarma. Ang mga pindutan na konektado sa itaas ay gagamitin upang maitakda sa bawat oras. Mula kaliwa hanggang kanan, itinakda ang mga ito kasalukuyang oras, itakda ang kasalukuyang minuto, itakda ang kasalukuyang AM o PM, itakda ang oras ng alarma, itakda ang minuto ng alarma, itakda ang alarma AM o PM. Ginagamit ang huling pindutan upang patahimikin ang alarma kapag tumunog ito.
Hakbang 10:
2. Ang unang bagay na kailangan nating gawin ay gawing simula ang aming variable na gagamitin namin.
// Initialize variable na gagamitin oras = 0; // Hour para sa kasalukuyang oras int minuto = 0; //
Minuto para sa kasalukuyang oras int segundo = 0; // Pangalawa para sa kasalukuyang oras
int hour_a = 0; int // Oras para sa oras ng alarma
minuto_a = 0; // Minuto para sa oras ng alarma
bool am_pm = false; // AM / PM toggle flag. Mali ang AM, Totoo si PM
bool am_pm_a = false; // AM / PM toggle flag para sa alarma. Mali ang AM, Totoo si PM
int set_hr = 13; // Gumamit ng pin 13 upang magtakda ng oras
int set_min = 12; // Gumamit ng pin 12 upang maitakda ang minuto int
set_am_pm = 11; // Gumamit ng pin 11 upang itakda ang am / pm
int set_hr_a = 10; // Gumamit ng pin 10 upang magtakda ng oras para sa alarm int set_min_a = 9; // Gumamit ng pin 9 upang magtakda ng minuto para sa alarm int set_am_pm_a = 8; // Gumamit ng pin 8 upang itakda ang am / pm para sa alarma
int speaker = 7; // Pin upang magamit para sa speakerint tahimik = 6; // I-pin upang ihinto ang nagsasalita
bool alarm = false; // I-flag upang magpalipat-lipat upang mapanatili ang alarma
pinatahimik ang bool = false; // Flag na nagpapakita ng tahimik ay hindi na pinindot
int cur_time = 0; // Variable para sa kasalukuyang oras
int etime = 0; // Variable para sa lumipas na oras
Hakbang 11:
3. Susunod, kailangan naming i-set up ang LCD screen at sabihin sa gumagamit na itakda ang kasalukuyang oras. Dahil kailangan lang itong gawin nang isang beses, gagawin namin ito sa gawain sa pag-set up.
walang bisa ang pag-setup () {
// I-set up ang LCD screen
Serial.begin (9600); // Initialize Serial at 9600 baud
Serial.write (17); // Buksan ang ilaw sa likuran
Serial.write (24); // I-on ang display, na may cursor at walang blink
Serial.write (12); // I-clear ang screen
Serial.write (128); // Ilipat ang cursor sa kaliwang sulok sa itaas // Itakda ang pinModes pinMode (set_hr, INPUT); pinMode (set_min, INPUT);
pinMode (set_am_pm, INPUT);
pinMode (set_hr_a, INPUT);
pinMode (set_min_a, INPUT);
pinMode (set_am_pm_a, INPUT);
pinMode (speaker, OUTPUT);
pinMode (tahimik, INPUT);
// Sa paunang lakas, itakda ng gumagamit ang kasalukuyang oras. Serial.print ("Itakda ang kasalukuyang oras"); pagkaantala (2000);
Serial.write (12);
printTimes ();
cur_time = millis (); // Itago ang kasalukuyang oras}
Hakbang 12:
4. Pagkatapos, sa gawain ng loop, sinusubaybayan namin ang oras at binasa ang katayuan ng pindutan upang makita kung ang gumagamit ay nagtatakda ng alinman sa mga oras.
void loop () {
// Panatilihin ang Oras
keepTime ();
// Suriin upang makita kung oras na upang mag-alarma!
kung ((oras == hour_a && minuto == minuto_a &&! tumahimik) || alarma) {tone (speaker, 2000, 500); // Output isang tunog na 2000 Hz sa speaker para sa 500 ms
pagkaantala (500); // Delay 500 ms if (! Alarm) {// Kung naka-off ang alarm, i-on ito
}
}
// Kung patahimikin ng gumagamit ang alarma sa pamamagitan ng pagpindot sa tahimik na pindutan, ihinto ang pag-alarma kung (alarm &&! Natahimik && digitalRead (tahimik))
alarm = false;
natahimik = totoo; }
// Reset the alarm if (! Alarm && matahimik && minuto! = Minuto_a) {tahimik = maling;
}
// Suriin upang makita kung ang mga itinakdang pin ay mataas, at kung gayon, dagdagan ang kaukulang halaga (digitalRead (set_hr) && oras <12) {
oras ++;
printTimes ();
debounce ();
}
kung hindi man (digitalRead (set_hr) && hour == 12) {hour = 1;
printTimes ();
debounce ();
}
iba pa {}
kung (digitalRead (set_min) && minuto <59) {
minuto ++; printTime ();
debounce ();
}
kung hindi man kung (digitalRead (set_min) && minuto == 59) {minuto = 0;
printTimes ();
debounce ();
}
iba pa {} kung (digitalRead (set_am_pm) && am_pm) {
am_pm = false;
printTimes ();
debounce ();
}
kung hindi man (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
debounce ();
}
iba pa {} kung (digitalRead (set_hr_a) && hour_a <12) {
oras_a ++;
printTimes ();
debounce ();
}
kung hindi man (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
debounce ();
}
iba pa {} kung (digitalRead (set_min_a) && minuto_a <59) {
minuto_a ++;
printTimes ();
debounce ();
}
kung hindi man kung (digitalRead (set_min) && minuto_a == 59) {minuto_a = 0;
printTimes ();
debounce ();
}
iba pa {} kung (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = false;
printTimes ();
debounce ();
}
kung hindi man (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;
printTimes ();
debounce ();
}
iba pa {}
}
Hakbang 13:
5. Dito, mapapansin mo ang isang pares ng mga subroutine na aking nilikha - debounce () at printTimes (). Ginagamit ang Debounce () upang matiyak na isang beses lang natin nabasa ang mga pindutan. Dahil ang Arduino ay nag-i-scan ng libu-libong beses bawat segundo, maaaring isipin na ang pindutan ay pinindot nang maraming beses kung nilalayon mo lamang na mabasa ito nang isang beses. I-freeze ng Debounce () ang programa hanggang sa mailabas ang pindutan. nai-update ng printTimes () ang screen ng LCD, ngunit dahil maraming mga utos iyon, na-type ko ang mga ito nang isang beses at pagkatapos ay maaaring tumawag sa subroutine anumang oras na nagbago ang halaga ng oras.
// Habang ang alinman sa mga pindutan ay pinindot, manatili sa pagpapaandar na ito pagkatapos ay antalahin ang 250 ms.
void debounce () {
habang (digitalRead (set_hr) || digitalRead (set_min) ||
digitalRead (set_am_pm) || digitalRead (set_hr_a) ||
digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} pagkaantala (250);
}
// Nagpi-print ng na-update na oras kung mayroong anumang mga pagbabago
walang bisa ang mga printTime () {
Serial.write (12);
Serial.print ("Kasalukuyang Oras:");
Serial.write (148);
kung (oras <10) {
Serial.print ("0");
}
Serial.print (oras);
Serial.print (":");
kung (minuto <10) {
Serial.print ("0");
}
Serial.print (minuto); Serial.print (":");
kung (pangalawa <10) {
Serial.print ("0");
}
Serial.print (pangalawa);
kung (am_pm) {
Serial.print ("PM");
}
iba pa {
Serial.print ("AM");
}
Serial.write (168);
Serial.print ("Itakda ang Alarm para sa:");
Serial.write (188);
kung (oras_a <10) {
Serial.print ("0");
}
Serial.print (oras_a);
Serial.print (":");
kung (minuto_a <10) {
Serial.print ("0");
}
Serial.print (minuto_a);
kung (am_pm_a) {
Serial.print ("PM");
}
iba pa {
Serial.print ("AM");
}
}
// Palakihin ang mga parameter ng oras na walang bisa
keepTime () {
etime = millis () - cur_time;
kung (etime> = 1000 && segundo <59) {
pangalawang ++;
cur_time = millis ();
printTimes ();
}
kung hindi man (etime> = 1000 && segundo == 59 && minuto <59) {segundo = 0;
minuto ++;
cur_time = millis ();
printTimes ();
}
kung hindi man (etime> = 1000 && segundo == 59 && minuto == 59 && oras <12) {
pangalawa = 0; minuto =
0; oras ++; cur_time =
millis (); printTimes ();
}
kung hindi man (etime> = 1000 && segundo == 59 && minuto == 59 && oras == 12) {
pangalawa = 0; minuto =
0; oras = 1; am_pm =
! am_pm;
cur_time = millis ();
printTimes ();
}
iba pa {}
}
Hakbang 14:
6. Iyon lang!
Mag-compile at mag-upload at tapos ka na!
Inirerekumendang:
Smart Alarm Clock: isang Smart Alarm Clock na Ginawa Ng Raspberry Pi: 10 Hakbang (na may Mga Larawan)
Smart Alarm Clock: isang Smart Alarm Clock na Ginawa Ng Raspberry Pi: Nais mo na ba ang isang matalinong orasan? Kung gayon, ito ang solusyon para sa iyo! Gumawa ako ng Smart Alarm Clock, ito ay isang orasan na maaari mong baguhin ang oras ng alarma ayon sa website. Kapag pumapatay ang alarma, magkakaroon ng tunog (buzzer) at 2 ilaw ang
Slap Alarm Clock Sa Arduino: 13 Mga Hakbang (na may Mga Larawan)
Slap Alarm Clock With Arduino: Hindi ko alam ang tungkol sa iyo, ngunit ang isang simpleng alarm clock ay hindi nagising na gisingin ako. Kailangan ko ng magaan, tunog at kahit malambot na sampal upang magising. Walang apela sa alarm na nag-apela sa akin, kaya't napagpasyahan kong gawing isa ang aking sarili, karapat-dapat gisingin ako. Kahit na tila ang alarm clock ay
DIY Sesame Street Alarm Clock (may Fire Alarm!): 6 na Hakbang (na may Mga Larawan)
DIY Sesame Street Alarm Clock (may Fire Alarm!): Kumusta kayong lahat! Ang proyektong ito ang aking una. Dahil darating ang unang kaarawan ng aking mga pinsan, nais kong gumawa ng isang espesyal na regalo para sa kanya. Narinig ko mula sa tiyuhin at tiya na siya ay nasa Sesame Street, kaya't nagpasya ako kasama ang aking mga kapatid na gumawa ng isang alarm clock batay
LED Sunrise Alarm Clock Sa Nako-customize na Alarm ng Kanta: 7 Hakbang (na may Mga Larawan)
LED Sunrise Alarm Clock Sa Nako-customize na Alarm ng Kanta: Ang Aking Pagganyak Ngayong taglamig ang aking kasintahan ay nagkaroon ng maraming problema paggising sa umaga at tila naghihirap mula sa SAD (Seasonal Affective Disorder). Napansin ko pa nga kung gaano kahirap magising sa taglamig dahil hindi pa dumating ang araw
Pag-iipon ng "Wise Clock 2" (Arduino-based Alarm Clock Na Maraming mga Dagdag na Mga Tampok): 6 na Hakbang
Pag-iipon ng "Wise Clock 2" (Arduino-based Alarm Clock Na Maraming Maraming Mga Tampok): Ipinapakita ng tutorial na ito kung paano tipunin ang kit para sa Wise Clock 2, isang bukas na mapagkukunan (hardware at software) na proyekto. Ang isang kumpletong Wise Clock 2 kit ay maaaring mabili dito. Sa buod, ito ang magagawa ng Wise Clock 2 (sa kasalukuyang open source softwa