Innholdsfortegnelse:
- Trinn 1: Tilkoblingsinstruksjoner
- Steg 2:
- Trinn 3:
- Trinn 4:
- Trinn 5:
- Trinn 6:
- Trinn 7:
- Trinn 8:
- Trinn 9: Programmeringsinstruksjoner
- Trinn 10:
- Trinn 11:
- Trinn 12:
- Trinn 13:
- Trinn 14:
Video: Arduino vekkerklokke prosjekt: 14 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
I dette prosjektet vil vi bruke Arduino Uno til å kontrollere en LCD -skjerm for å vise gjeldende tid og klokkeslett som en alarm er angitt for. Vi bruker knappene til å stille inn hver gang.
Materialer:
- Arduino Uno -
- Breadboard -
- Jumper Wires (x13+) -
- 10 kohm motstander (x4) -
- LCD -skjerm -
- 7 knapper-https://vilros.com/collections/raspberry-pi-acces…
- Piezo -høyttaler -
Trinn 1: Tilkoblingsinstruksjoner
1. Koble en startkabel fra 5V -pinnen på Arduino til en av + skinnene på brødbrettet.
Steg 2:
2. Koble en startkabel fra GND -pinnen på Arduino til - skinnen ved siden av + skinnen du valgte på brødbrettet.
Trinn 3:
3. Koble LCD -skjermen til strøm, bakken og TX -pinnen (pin 1).
Trinn 4:
4. Plasser 7 knapper på brødbrettet med beina over gapet i brødbrettet.
Trinn 5:
5. Plasser 10 kohm -motstander fra - skinnen med GND -pinnen koblet til den nederste venstre pinnen på knappene.
Trinn 6:
6. Plasser jumperkabler mellom knappene nederst til høyre på knappene og 5V -skinnen på brødbrettet.
Trinn 7:
7. Plasser jumperledninger mellom pinnene 6, deretter 8-13, og pinnen på knappen som motstanden er koblet til.
Trinn 8:
8. Plasser deretter din Piezo -høyttaler på brødbrettet og koble pinne 7 til strømnålen, deretter en 100 ohm motstand til bakken.
Trinn 9: Programmeringsinstruksjoner
1. Oversikt: Dette prosjektet vil be brukeren om å stille gjeldende tid på startstrømmen på skjermen gjeldende tid og klokkeslett for alarmen. Knappene som er koblet ovenfor, brukes til å stille inn hver gang. Fra venstre til høyre er de angitt gjeldende time, angitt gjeldende minutt, angitt gjeldende AM eller PM, angitt alarmtime, angitt alarmminutt, angitt alarm AM eller PM. Den siste knappen brukes til å dempe alarmen når den høres.
Trinn 10:
2. Det første vi må gjøre er å initialisere variabelen vi skal bruke.
// Initialiser variabler som skal brukesintime = 0; // Time for gjeldende tid int minutt = 0; //
Minutt for gjeldende tid int sekund = 0; // Andre for gjeldende tid
int time_a = 0; int // Time for alarmtid
minutt_a = 0; // Minutt for alarmtid
bool am_pm = false; // AM/PM vekselflagg. Falskt er AM, sant er PM
bool am_pm_a = false; // AM/PM vekselflagg for alarm. Falskt er AM, sant er PM
int set_hr = 13; // Bruk pin 13 for å stille timen
int set_min = 12; // Bruk pinne 12 for å angi minutt int
set_am_pm = 11; // Bruk pin 11 for å stille inn am/pm
int set_hr_a = 10; // Bruk pin 10 for å stille time for alarm int set_min_a = 9; // Bruk pin 9 til å angi minutt for alarm int set_am_pm_a = 8; // Bruk pin 8 for å stille am/pm for alarm
int høyttaler = 7; // Pin som skal brukes for høyttalere: stille = 6; // Fest for å stoppe høyttaleren
bool alarm = false; // Flagg for å veksle for å fortsette å være alarmerende
bool quieted = false; // Flagget som viser stille har ikke blitt trykket
int cur_time = 0; // Variabel for gjeldende tid
int etime = 0; // Variabel for forløpt tid
Trinn 11:
3. Deretter må vi sette opp LCD -skjermen og be brukeren om å angi gjeldende tid. Siden dette bare trenger å gjøres en gang, gjør vi det i oppsettsrutinen.
ugyldig oppsett () {
// Sett opp LCD -skjerm
Serial.begin (9600); // Initialiser Serial på 9600 baud
Serial.write (17); // Slå på baklyset
Serial.write (24); // Slå på displayet, med markør og uten blink
Serial.write (12); // Fjern skjermen
Serial.write (128); // Flytt markøren til øverste venstre hjørne // Sett pinModes pinMode (set_hr, INNGANG); 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øyttaler, OUTPUT);
pinMode (stille, INNGANG);
// Ved første strøm, må brukeren angi gjeldende tid. Serial.print ("Angi gjeldende tid"); forsinkelse (2000);
Serial.write (12);
printTimes ();
cur_time = millis (); // Lagre gjeldende tid}
Trinn 12:
4. Så, i loop -rutinen, holder vi oversikt over tiden og leser knappestatusene for å se om brukeren angir en av gangene.
void loop () {
// Holde tiden
holde tiden();
// Sjekk om det er på tide å alarmere!
hvis ((time == time_a && minutt == minutt_a &&! stille) || alarm) {tone (høyttaler, 2000, 500); // Send en lyd på 2000 Hz til høyttaleren i 500 ms
forsinkelse (500); // Forsink 500 ms hvis (! Alarm) {// Hvis alarmen er slått av, slå den på
}
}
// Hvis brukeren demper alarmen ved å trykke på den stille knappen, må du slutte å alarme hvis (alarm &&! Stille && digitalRead (stille)) {
alarm = usann;
stille = sant; }
// Tilbakestill alarmen hvis (! Alarm && quieted && minute! = Minute_a) {quieted = false;
}
// Sjekk om settpinnene går høyt, og øk i så fall den tilsvarende verdien if (digitalRead (set_hr) && time <12) {
time ++;
printTimes ();
debounce ();
}
ellers hvis (digitalRead (set_hr) && time == 12) {time = 1;
printTimes ();
debounce ();
}
ellers{}
if (digitalRead (set_min) && minute <59) {
minutt ++; printTimes ();
debounce ();
}
ellers hvis (digitalRead (set_min) && minutt == 59) {minutt = 0;
printTimes ();
debounce ();
}
annet {} if (digitalRead (set_am_pm) && am_pm) {
am_pm = false;
printTimes ();
debounce ();
}
ellers hvis (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
debounce ();
}
annet {} if (digitalRead (set_hr_a) && hour_a <12) {
time_a ++;
printTimes ();
debounce ();
}
ellers hvis (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
debounce ();
}
annet {} if (digitalRead (set_min_a) && minute_a <59) {
minutt_a ++;
printTimes ();
debounce ();
}
ellers hvis (digitalRead (set_min) && minute_a == 59) {minute_a = 0;
printTimes ();
debounce ();
}
annet {} if (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = usant;
printTimes ();
debounce ();
}
annet hvis (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;
printTimes ();
debounce ();
}
ellers{}
}
Trinn 13:
5. Her vil du legge merke til et par underrutiner jeg opprettet - debounce () og printTimes (). Debounce () brukes til å sikre at vi bare leser knappene en gang. Siden Arduino skanner tusenvis av ganger i sekundet, kan det tro at knappen ble trykket flere ganger når du bare hadde tenkt å lese den en gang. Debounce () vil fryse programmet til knappen slippes. printTimes () oppdaterer LCD -skjermen, men siden det var flere kommandoer, skrev jeg dem en gang og kan deretter ringe underprogrammet når som helst en tidsverdi endres.
// Mens du trykker på noen av knappene, blir du i denne funksjonen og forsinker deretter 250 ms.
void debounce () {
mens (digitalRead (set_hr) || digitalRead (set_min) ||
digitalRead (set_am_pm) || digitalRead (set_hr_a) ||
digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} forsinkelse (250);
}
// Skriver ut oppdaterte tider hvis det er endringer
void printTimes () {
Serial.write (12);
Serial.print ("Nåværende tid:");
Serial.write (148);
hvis (time <10) {
Serial.print ("0");
}
Serial.print (time);
Serial.print (":");
hvis (minutt <10) {
Serial.print ("0");
}
Serial.print (minutt); Serial.print (":");
hvis (andre <10) {
Serial.print ("0");
}
Serial.print (andre);
hvis (am_pm) {
Serial.print ("PM");
}
ellers{
Serial.print ("AM");
}
Serial.write (168);
Serial.print ("Alarm Set for:");
Serial.write (188);
hvis (time_a <10) {
Serial.print ("0");
}
Serial.print (time_a);
Serial.print (":");
hvis (minutt_a <10) {
Serial.print ("0");
}
Serial.print (minutt_a);
hvis (am_pm_a) {
Serial.print ("PM");
}
ellers{
Serial.print ("AM");
}
}
// Øk tidsparametrene ugyldige
holde tiden(){
etime = millis () - cur_time;
if (etime> = 1000 && second <59) {
andre ++;
cur_time = millis ();
printTimes ();
}
ellers hvis (etime> = 1000 && second == 59 && minutt <59) {second = 0;
minutt ++;
cur_time = millis ();
printTimes ();
}
annet hvis (etime> = 1000 && second == 59 && minute == 59 && time <12) {
andre = 0; minutt =
0; time ++; cur_time =
millis (); printTimes ();
}
annet hvis (etime> = 1000 && sekund == 59 && minutt == 59 && time == 12) {
andre = 0; minutt =
0; time = 1; am_pm =
!morgen kveld;
cur_time = millis ();
printTimes ();
}
ellers{}
}
Trinn 14:
6. Det er det!
Kompiler og last opp, og du er ferdig!
Anbefalt:
Smart vekkerklokke ved hjelp av Magicbit (Arduino): 10 trinn
Smart vekkerklokke ved hjelp av Magicbit (Arduino): Denne opplæringen viser hvordan du lager en smart vekkerklokke ved hjelp av OLED -skjerm i Magicbit dev board uten å bruke noen RTC -modul
Arduino vekkerklokke med temperatursensor: 5 trinn
Arduino vekkerklokke med temperatursensor: Arduino er en veldig enkel og billig mikrokontroller. og varierer lett å kontrollere det. Så hva du vil forvente i dette prosjektet … vi vil bruke RTC så nøyaktige tidsalarminnstillinger som er høy nok til å vekke romtemperaturen din hvis du vil se videoklikk
Smart vekkerklokke: en smart vekkerklokke laget med bringebær Pi: 10 trinn (med bilder)
Smart vekkerklokke: en smart vekkerklokke laget med bringebær Pi: Har du noen gang ønsket deg en smart klokke? I så fall er dette løsningen for deg! Jeg lagde Smart Alarm Clock, dette er en klokke som du kan endre alarmtiden i henhold til nettstedet. Når alarmen går, kommer det en lyd (summer) og 2 lys vil
DIY Arduino binær vekkerklokke: 14 trinn (med bilder)
DIY Arduino Binary Alarm Clock: Det er den klassiske binære klokken igjen! Men denne gangen med enda mer tilleggsfunksjon! I denne instruksen vil jeg vise deg hvordan du bygger en binær vekkerklokke med Arduino som ikke bare kan vise deg tid, men dato, måned, selv med timer og alarmmoro
Slap -vekkerklokke med Arduino: 13 trinn (med bilder)
Slap Alarm Clock With Arduino: Jeg vet ikke om deg, men en enkel vekkerklokke kan ikke vekke meg. Jeg trenger lys, lyd og til og med en myk smell for å våkne. Ingen vekkerklokke appellerer til meg, så jeg bestemte meg for å gjøre meg selv en verdig til å vekke meg. Selv om det virker som vekkerklokken