Innehållsförteckning:
- Steg 1: Anslutningsinstruktioner
- Steg 2:
- Steg 3:
- Steg 4:
- Steg 5:
- Steg 6:
- Steg 7:
- Steg 8:
- Steg 9: Programmeringsinstruktioner
- Steg 10:
- Steg 11:
- Steg 12:
- Steg 13:
- Steg 14:
Video: Arduino väckarklocka: 14 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
I detta projekt kommer vi att använda Arduino Uno för att styra en LCD -skärm för att visa aktuell tid och tid som ett larm är inställt för. Vi kommer att använda knapparna för att ställa in varje gång.
Material:
- Arduino Uno -
- Breadboard -
- Jumper Wires (x13+) -
- 10 kohm -motstånd (x4) -
- LCD -skärm -
- 7 Knappar-https://vilros.com/collections/raspberry-pi-acces…
- Piezo -högtalare -
Steg 1: Anslutningsinstruktioner
1. Anslut en bygelkabel från 5V -stiftet på Arduino till en av + -skenorna på brödbrädet.
Steg 2:
2. Anslut en bygelkabel från GND -stiftet på Arduino till - skenan bredvid + skenan du valde på brödbrädan.
Steg 3:
3. Anslut LCD -skärmen till ström, jord och TX -stift (stift 1).
Steg 4:
4. Placera 7 knappar på brödbrädet med benen tvärs över springan i brödbrädet.
Steg 5:
5. Placera 10 kohm -motstånd från - skenan med GND -stiftet anslutet till knapparnas nedre vänstra stift.
Steg 6:
6. Placera bygelkablarna mellan knapparnas nedre högra stift och 5V -skenan på din brödbräda.
Steg 7:
7. Placera bygelkablar mellan stiften 6, sedan 8-13, och tappen på knappen som motståndet är anslutet till.
Steg 8:
8. Lägg sedan din Piezo -högtalare på brödbrädet och anslut stift 7 till strömstiftet, sedan ett 100 ohm motstånd till jord.
Steg 9: Programmeringsinstruktioner
1. Översikt: Detta projekt kommer att be användaren att ställa in den aktuella tiden på startströmmen på displayen den aktuella tiden och den tid alarmet är inställt för. Knapparna som är anslutna ovan används för att ställa in varje gång. Från vänster till höger, de ställs in aktuell timme, ställer in aktuell minut, ställer in aktuell AM eller PM, ställer in alarmtid, ställer in alarmminut, ställer in alarm AM eller PM. Den sista knappen används för att tysta larmet när det ljuder.
Steg 10:
2. Det första vi behöver göra är att initiera vår variabel som vi ska använda.
// Initiera variabler som ska användas under timme = 0; // Timme för aktuell tid int minut = 0; //
Minut för aktuell tid int sekund = 0; // Andra för aktuell tid
int timme_a = 0; int // Timme för larmtid
minut_a = 0; // Minut för larmtid
bool am_pm = false; // AM/PM växla flagga. Falskt är AM, sant är PM
bool am_pm_a = falskt; // AM/PM växla flagga för larm. Falskt är AM, sant är PM
int set_hr = 13; // Använd stift 13 för att ställa in timme
int set_min = 12; // Använd stift 12 för att ställa in minutint
set_am_pm = 11; // Använd stift 11 för att ställa in am/pm
int set_hr_a = 10; // Använd stift 10 för att ställa in timme för alarm int set_min_a = 9; // Använd stift 9 för att ställa in minut för larm int set_am_pm_a = 8; // Använd stift 8 för att ställa in am/pm för larm
int -högtalare = 7; // Nål som ska användas för högtalare: tyst = 6; // Pin för att stoppa högtalaren
bool alarm = false; // Flagga för att växla för att fortsätta vara alarmerande
bool tystas = falskt; // Flaggan som visar tyst har inte tryckts
int cur_time = 0; // Variabel för aktuell tid
int etime = 0; // Variabel för förfluten tid
Steg 11:
3. Därefter måste vi ställa in LCD -skärmen och berätta för användaren att ställa in aktuell tid. Eftersom detta bara behöver göras en gång, gör vi det i installationsrutinen.
void setup () {
// Ställ in LCD -skärm
Serial.begin (9600); // Initiera Serial vid 9600 baud
Serial.write (17); // Slå på bakljuset
Serial.write (24); // Slå på displayen, med markör och ingen blinkning
Serial.write (12); // Rensa skärmen
Serial.write (128); // Flytta markören till övre vänstra hörnet // Ställ in pinModes pinMode (set_hr, INMATNING); 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 (högtalare, OUTPUT);
pinMode (tyst, INGÅNG);
// Vid initial effekt, låt användaren ställa in aktuell tid. Serial.print ("Ställ in aktuell tid"); fördröjning (2000);
Serial.write (12);
printTimes ();
cur_time = millis (); // Spara aktuell tid}
Steg 12:
4. Sedan, i loop -rutinen, håller vi koll på tiden och läser knappens status för att se om användaren ställer in någon av tiderna.
void loop () {
// Håll tiden
håll tiden();
// Kontrollera om det är dags att larma!
om ((timme == tim_a && minut == minut_a &&! tyst) || larm) {ton (högtalare, 2000, 500); // Mata ut ett ljud på 2000 Hz till högtalaren i 500 ms
fördröjning (500); // Fördröj 500 ms om (! Alarm) {// Om alarmet är avstängt, slå på det
}
}
// Om användaren tystnar larmet genom att trycka på den tysta knappen, sluta larma om (alarm &&! Quieted && digitalRead (tyst)) {
larm = falskt;
tystnad = sant; }
// Återställ larmet om (! Alarm && quieted && minute! = Minute_a) {quieted = false;
}
// Kontrollera om de inställda stiften går högt och öka i så fall motsvarande värde if (digitalRead (set_hr) && hour <12) {
timme ++;
printTimes ();
debounce ();
}
annars om (digitalRead (set_hr) && hour == 12) {hour = 1;
printTimes ();
debounce ();
}
annan{}
if (digitalRead (set_min) && minut <59) {
minut ++; printTimes ();
debounce ();
}
annars om (digitalRead (set_min) && minute == 59) {minute = 0;
printTimes ();
debounce ();
}
annars {} if (digitalRead (set_am_pm) && am_pm) {
am_pm = falskt;
printTimes ();
debounce ();
}
annars om (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
debounce ();
}
annars {} if (digitalRead (set_hr_a) && hour_a <12) {
timme_a ++;
printTimes ();
debounce ();
}
annars om (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
debounce ();
}
annars {} if (digitalRead (set_min_a) && minute_a <59) {
minut_a ++;
printTimes ();
debounce ();
}
annars om (digitalRead (set_min) && minute_a == 59) {minute_a = 0;
printTimes ();
debounce ();
}
annat {} if (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = falskt;
printTimes ();
debounce ();
}
annars om (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;
printTimes ();
debounce ();
}
annan{}
}
Steg 13:
5. Här kommer du att märka ett par underrutiner jag skapade - debounce () och printTimes (). Debounce () används för att se till att vi bara läser knapparna en gång. Eftersom Arduino skannar tusentals gånger per sekund kan det tro att knappen trycktes flera gånger när du bara tänkt att den skulle läsas en gång. Debounce () fryser programmet tills knappen släpps. printTimes () uppdaterar LCD -skärmen, men eftersom det var flera kommandon skrev jag in dem en gång och kan sedan ringa subrutinen när som helst ett tidsvärde ändras.
// Medan någon av knapparna trycks in, stanna kvar i den här funktionen och fördröj sedan 250 ms.
void debounce () {
medan (digitalRead (set_hr) || digitalRead (set_min) ||
digitalRead (set_am_pm) || digitalRead (set_hr_a) ||
digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} fördröjning (250);
}
// Skriver ut uppdaterade tider om det finns några ändringar
void printTimes () {
Serial.write (12);
Serial.print ("Aktuell tid:");
Serial.write (148);
om (timme <10) {
Serial.print ("0");
}
Serial.print (timme);
Serial.print (":");
om (minut <10) {
Serial.print ("0");
}
Serial.print (minut); Serial.print (":");
om (andra <10) {
Serial.print ("0");
}
Serial.print (andra);
om (am_pm) {
Serial.print ("PM");
}
annan{
Serial.print ("AM");
}
Serial.write (168);
Serial.print ("Larm inställt för:");
Serial.write (188);
om (timme_a <10) {
Serial.print ("0");
}
Serial.print (hour_a);
Serial.print (":");
om (minut_a <10) {
Serial.print ("0");
}
Serial.print (minut_a);
om (am_pm_a) {
Serial.print ("PM");
}
annan{
Serial.print ("AM");
}
}
// Öka tidsparametrarna ogiltiga
håll tiden(){
etime = millis () - cur_time;
if (etime> = 1000 && second <59) {
andra ++;
cur_time = millis ();
printTimes ();
}
annars om (etime> = 1000 && second == 59 && minute <59) {second = 0;
minut ++;
cur_time = millis ();
printTimes ();
}
annars om (etime> = 1000 && second == 59 && minute == 59 && timme <12) {
andra = 0; minut =
0; timme ++; cur_time =
millis (); printTimes ();
}
annars om (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {
andra = 0; minut =
0; timme = 1; am_pm =
!am PM;
cur_time = millis ();
printTimes ();
}
annan{}
}
Steg 14:
6. Det är det!
Kompilera och ladda upp och du är klar!
Rekommenderad:
Smart väckarklocka med Magicbit (Arduino): 10 steg
Smart väckarklocka med hjälp av Magicbit (Arduino): Denna handledning visar hur du gör en smart väckarklocka med hjälp av OLED -display i Magicbit dev -kort utan att använda någon RTC -modul
Arduino väckarklocka med temperatursensor: 5 steg
Arduino väckarklocka med temperatursensor: Arduino är en mycket enkel och billig mikrokontroller. och varierar lätt att kontrollera det. Så vad du kommer att förvänta dig i det här projektet … vi kommer att använda RTC så noggranna tidsalarminställningar som är tillräckligt högt för att väcka din rumstemperatur om du vill titta på videoklick
Smart väckarklocka: en smart väckarklocka tillverkad med hallon Pi: 10 steg (med bilder)
Smart väckarklocka: en smart väckarklocka tillverkad med hallon Pi: Har du någonsin velat ha en smart klocka? I så fall är detta lösningen för dig! Jag gjorde Smart Alarm Clock, det här är en klocka som du kan ändra alarmtiden enligt webbplatsen. När larmet går går det ett ljud (summer) och 2 lampor lyser
DIY Arduino binär väckarklocka: 14 steg (med bilder)
DIY Arduino binära väckarklocka: Det är den klassiska binära klockan igen! Men den här gången med ännu mer tilläggsfunktion! I den här instruktören visar jag dig hur du bygger en binär väckarklocka med Arduino som inte bara kan visa dig tid, men datum, månad, även med timer och larm
Slap väckarklocka med Arduino: 13 steg (med bilder)
Slap Alarm Clock With Arduino: Jag vet inte om dig, men en enkel väckarklocka kan inte väcka mig. Jag behöver ljus, ljud och till och med en mjuk smäll för att vakna. Ingen väckarklocka tilltalar mig, så jag bestämde mig för att göra mig själv en värdig att väcka mig. Även om det verkar väckarklockan jag