Inhoudsopgave:
- Stap 1: Aansluitinstructies
- Stap 2:
- Stap 3:
- Stap 4:
- Stap 5:
- Stap 6:
- Stap 7:
- Stap 8:
- Stap 9: Programmeerinstructies
- Stap 10:
- Stap 11:
- Stap 12:
- Stap 13:
- Stap 14:
Video: Arduino Alarm Clock Project - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
In dit project zullen we de Arduino Uno gebruiken om een LCD-scherm te bedienen om de huidige tijd en tijd weer te geven waarvoor een alarm is ingesteld. We zullen knoppen gebruiken om elke keer in te stellen.
Materialen:
- Arduino Uno -
- Breadboard -
- Doorverbindingsdraden (x13+) -
- 10 kohm weerstanden (x4) -
- LCD-scherm -
- 7 knoppen -
- Piëzo-luidspreker -
Stap 1: Aansluitinstructies
1. Sluit een jumperdraad van de 5V-pin op de Arduino aan op een van de + rails op het breadboard.
Stap 2:
2. Sluit een jumperdraad van de GND-pin op de Arduino aan op de - rail naast de + rail die je op het breadboard hebt gekozen.
Stap 3:
3. Sluit het LCD-scherm aan op voeding, aarde en de TX-pin (pin 1).
Stap 4:
4. Plaats 7 knoppen op het breadboard met de pootjes over de opening in het breadboard.
Stap 5:
5. Plaats 10 kohm weerstanden van de - rail met de GND pin aangesloten op de pinnen linksonder van de knoppen.
Stap 6:
6. Plaats jumperdraden tussen de pin rechtsonder van de knoppen en de 5V-rail op uw breadboard.
Stap 7:
7. Plaats jumperdraden tussen pin 6, dan 8-13 en de pin op de knop waarop de weerstand is aangesloten.
Stap 8:
8. Plaats vervolgens uw piëzo-luidspreker op het breadboard en sluit pin 7 aan op de voedingspin en vervolgens een weerstand van 100 ohm op aarde.
Stap 9: Programmeerinstructies
1. Overzicht: Dit project zal de gebruiker vragen om de huidige tijd in te stellen bij het eerste inschakelen van het display, de huidige tijd en de tijd waarop het alarm is ingesteld. De knoppen die hierboven zijn aangesloten, worden elke keer gebruikt om in te stellen. Van links naar rechts zijn dit het huidige uur, huidige minuut, huidige AM of PM, alarmuur, alarmminuut, alarm AM of PM. De laatste knop wordt gebruikt om het alarm uit te zetten wanneer het afgaat.
Stap 10:
2. Het eerste dat we moeten doen, is onze variabele die we gaan gebruiken initialiseren.
// Initialiseer variabelen die moeten worden gebruikt in uur = 0; // Uur voor huidige tijd int minuut = 0; //
Minuut voor huidige tijd int seconde = 0; // Tweede voor huidige tijd
int uur_a = 0; int // Uur voor wektijd
minuut_a = 0; // Minuut voor wektijd
bool am_pm = onwaar; // AM/PM-vlag wisselen. Niet waar is AM, waar is PM
bool am_pm_a = onwaar; // AM/PM toggle vlag voor alarm. False is AM, True is PM
int set_hr = 13; // Gebruik pin 13 om het uur in te stellen
int set_min = 12; // Gebruik pin 12 om de minuut int. in te stellen
set_am_pm = 11; // Gebruik pin 11 om am/pm in te stellen
int set_hr_a = 10; // Gebruik pin 10 om het uur in te stellen voor alarm int set_min_a = 9; // Gebruik pin 9 om minuten in te stellen voor alarm int set_am_pm_a = 8; // Gebruik pin 8 om am/pm voor alarm in te stellen
int-luidspreker = 7; // Pin om te gebruiken voor speakerint stil = 6; // Pin om de luidspreker te stoppen
bool alarm = vals; // Vlag om te wisselen om alarmerend te blijven
bool stil = false; // Vlag met stilte is niet ingedrukt
int cur_time = 0; // Variabele voor huidige tijd
int etime = 0; // Variabele voor verstreken tijd
Stap 11:
3. Vervolgens moeten we het LCD-scherm instellen en de gebruiker vertellen om de huidige tijd in te stellen. Omdat dit maar één keer hoeft te worden gedaan, doen we het in de setup-routine.
ongeldige setup() {
// LCD-scherm instellen
Serieel.begin(9600); // Initialiseer serieel op 9600 baud
Serieel.schrijven (17); // Zet de achtergrondverlichting aan
Serieel.schrijven(24); // Zet het scherm aan, met cursor en zonder knipperen
Serieel.schrijven (12); // Wis het scherm
Serieel.schrijven(128); // Verplaats de cursor naar de linkerbovenhoek// Set pinModes pinMode(set_hr, INVOER); 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 (luidspreker, UITGANG);
pinMode (stil, INPUT);
// Laat de gebruiker bij het eerste inschakelen de huidige tijd instellen. Serial.print("Stel de huidige tijd in"); vertraging (2000);
Serieel.schrijven (12);
printTimes();
cur_time = millis(); // Bewaar de huidige tijd}
Stap 12:
4. Vervolgens houden we in de loop-routine de tijd bij en lezen we de status van de knop om te zien of de gebruiker een van de tijden instelt.
lege lus() {
// Houd de tijd vast
keepTime();
// Controleer of het tijd is om te alarmeren!
if((uur == uur_a && minuut == minuut_a && !rustig) || alarm){toon (luidspreker, 2000, 500); // Voer een 2000 Hz-geluid uit naar de luidspreker gedurende 500 ms
vertraging (500); // Vertraging 500 ms if(!alarm){ // Als het alarm uit staat, zet het dan aan
}
}
// Als de gebruiker het alarm uitzet door op de knop Stil te drukken, stop dan met alarmeren if(alarm && !quieted && digitalRead(quiet)){
alarm = vals;
stil = waar; }
// Reset het alarm if(!alarm && stil && minuut != minuut_a){ stil = false;
}
// Controleer of de ingestelde pinnen hoog worden, en zo ja, verhoog de bijbehorende waardeif(digitalRead(set_hr) && hour <12){
uur++;
printTimes();
debounce();
}
else if (digitalRead(set_hr) && hour == 12){ hour = 1;
printTimes();
debounce();
}
anders{}
if(digitalRead(set_min) && minuut < 59){
minuut++;printTimes();
debounce();
}
else if (digitalRead(set_min) && minuut == 59){ minuut = 0;
printTimes();
debounce();
}
else{}if(digitalRead(set_am_pm) && am_pm){
am_pm = onwaar;
printTimes();
debounce();
}
else if (digitalRead(set_am_pm) && !am_pm){ am_pm = true;printTimes();
debounce();
}
else{}if(digitalRead(set_hr_a) && hour_a < 12){
uur_a++;
printTimes();
debounce();
}
else if (digitalRead(set_hr_a) && hour_a == 12){hour_a = 1;
printTimes();
debounce();
}
else{}if(digitalRead(set_min_a) && minute_a < 59){
minuut_a++;
printTimes();
debounce();
}
else if (digitalRead(set_min) && minute_a == 59){minute_a = 0;
printTimes();
debounce();
}
else{}if(digitalRead(set_am_pm_a) && am_pm_a){
am_pm_a = onwaar;
printTimes();
debounce();
}
else if (digitalRead(set_am_pm_a) && !am_pm_a){am_pm_a = true;
printTimes();
debounce();
}
anders{}
}
Stap 13:
5. Hier zie je een aantal subroutines die ik heb gemaakt - debounce() en printTimes(). Debounce() wordt gebruikt om ervoor te zorgen dat we de knoppen maar één keer lezen. Omdat de Arduino duizenden keren per seconde scant, kan hij denken dat de knop meerdere keren is ingedrukt, terwijl het de bedoeling was dat deze maar één keer zou worden gelezen. Debounce() bevriest het programma totdat de knop wordt losgelaten. printTimes() werkt het LCD-scherm bij, maar aangezien dat verschillende commando's waren, heb ik ze één keer getypt en kan dan de subroutine aanroepen wanneer een tijdwaarde verandert.
// Blijf in deze functie terwijl een van de knoppen wordt ingedrukt en vertraag vervolgens 250 ms.
ongeldige debounce(){
while(digitalRead(set_hr) || digitalRead(set_min) ||
digitalRead(set_am_pm) || digitalRead(set_hr_a) ||
digitalRead(set_min_a) || digitalRead (set_am_pm_a)){} vertraging (250);
}
// Drukt de bijgewerkte tijden af als er wijzigingen zijn
ongeldige printTimes(){
Serieel.schrijven (12);
Serial.print("Huidige tijd:");
Serieel.schrijven(148);
if(uur < 10){
Serieel.print("0");
}
Seriële.afdruk(uur);
Serial.print(":");
if(minuut < 10){
Serieel.print("0");
}
Serial.print(minuut);Serial.print(":");
if(seconde < 10){
Serieel.print("0");
}
Seriële.afdruk (tweede);
als (am_pm){
Serial.print("PM");
}
anders{
Serial.print("AM");
}
Serieel.schrijven(168);
Serial.print("Alarm ingesteld voor:");
Serieel.schrijven (188);
if(uur_a < 10){
Serieel.print("0");
}
Serial.print(uur_a);
Serial.print(":");
if(minuut_a < 10){
Serieel.print("0");
}
Serial.print(minuut_a);
als (am_pm_a){
Serial.print("PM");
}
anders{
Serial.print("AM");
}
}
// Verhoog de tijdparameters ongeldig
keepTime(){
etime = millis() - cur_time;
if(etime >= 1000 && seconde < 59){
tweede++;
cur_time = millis();
printTimes();
}
else if(etime >= 1000 && seconde == 59 && minuut < 59){ seconde = 0;
minuut++;
cur_time = millis();
printTimes();
}
else if(etime >= 1000 && seconde == 59 && minuut == 59 && uur < 12){
seconde = 0; minuut =
0; uur++; cur_time =
millis(); printTimes();
}
else if(etime >= 1000 && seconde == 59 && minuut == 59 && uur == 12){
seconde = 0; minuut =
0; uur = 1; am_pm =
!AM PM;
cur_time = millis();
printTimes();
}
anders{}
}
Stap 14:
6. Dat is alles!
Compileren en uploaden en je bent klaar!
Aanbevolen:
Hoe maak je RADAR met behulp van Arduino voor Science Project - Beste Arduino-projecten: 5 stappen
Hoe maak je RADAR met behulp van Arduino voor Science Project | Beste Arduino-projecten: Hallo vrienden, in deze instructable laat ik je zien hoe je een geweldig radarsysteem kunt maken dat is gebouwd met behulp van Arduino nano. Dit project is ideaal voor wetenschappelijke projecten en je kunt dit gemakkelijk doen met heel minder investeringen en kansen als het winnen van een prijs geweldig is om
Arduino Project - Stopwatch: 3 stappen
Arduino Project - Stopwatch: Deze stopwatch kan worden gebruikt om alles te timen wat u maar wilt, bijvoorbeeld de tijd die nodig is om een taak af te ronden of om uzelf onder druk te zetten de tijd die nodig is om een werk af te maken. De LED's helpen de gebruiker om de timing van starten en stoppen duidelijk te kennen. Dit projectoorsprong
Arduino tekst-naar-spraak-converter met LM386 - Pratend Arduino-project - Talkie Arduino-bibliotheek: 5 stappen
Arduino tekst-naar-spraak-converter met LM386 | Pratend Arduino-project | Talkie Arduino-bibliotheek: Hallo allemaal, in veel projecten hebben we arduino nodig om zoiets als een pratende klok te spreken of wat gegevens te vertellen, dus in deze instructables zullen we tekst omzetten in spraak met behulp van Arduino
Hoe maak je een radar met Arduino - Arduino-project: 4 stappen
Hoe maak je een radar met Arduino | Arduino Project: In dit artikel leer ik je hoe je een eenvoudige radar kunt maken met Arduino. Bekijk hier een volledige video-tutorial: Click Me
USB-aangedreven brander! Dit project kan door plastic / hout / papier branden (leuk project moet ook heel fijn hout zijn): 3 stappen
USB-aangedreven brander! Dit project kan door plastic / hout / papier branden (leuk project moet ook heel fijn hout zijn): MAAK DIT NIET MET USB!!!! ik kwam erachter dat het je computer kan beschadigen door alle opmerkingen. mijn computer is in orde. Gebruik een 600mA 5v telefoonoplader. ik heb dit gebruikt en het werkt prima en niets kan worden beschadigd als je een veiligheidsstekker gebruikt om de stroom te stoppen