Sommario:
- Passaggio 1: istruzioni per il collegamento
- Passo 2:
- Passaggio 3:
- Passaggio 4:
- Passaggio 5:
- Passaggio 6:
- Passaggio 7:
- Passaggio 8:
- Passaggio 9: istruzioni di programmazione
- Passaggio 10:
- Passaggio 11:
- Passaggio 12:
- Passaggio 13:
- Passaggio 14:
Video: Progetto Sveglia Arduino: 14 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
In questo progetto, utilizzeremo Arduino Uno per controllare uno schermo LCD per mostrare l'ora e l'ora correnti per cui è impostato un allarme. Useremo i pulsanti per impostare ogni volta.
Materiali:
- Arduino Uno -
- Tagliere -
- Ponticelli (x13+) -
- Resistori da 10 kohm (x4) -
- Schermo LCD -
- 7 pulsanti -
- Altoparlante piezo -
Passaggio 1: istruzioni per il collegamento
1. Collegare un ponticello dal pin 5V su Arduino a uno dei binari + sulla breadboard.
Passo 2:
2. Collega un ponticello dal pin GND su Arduino al binario - accanto al binario + che hai scelto sulla breadboard.
Passaggio 3:
3. Collegare lo schermo LCD all'alimentazione, alla massa e al pin TX (pin 1).
Passaggio 4:
4. Posiziona 7 pulsanti sulla breadboard con le gambe attraverso lo spazio nella breadboard.
Passaggio 5:
5. Posizionare i resistori da 10 kohm dal binario - con il pin GND collegato ai pin in basso a sinistra dei pulsanti.
Passaggio 6:
6. Posiziona i cavi dei ponticelli tra il piedino in basso a destra dei pulsanti e la guida 5V sulla breadboard.
Passaggio 7:
7. Posizionare i cavi dei ponticelli tra i pin 6, quindi 8-13 e il pin sul pulsante a cui è collegato il resistore.
Passaggio 8:
8. Quindi, posiziona il tuo altoparlante Piezo sulla breadboard e collega il pin 7 al pin di alimentazione, quindi un resistore da 100 ohm a terra.
Passaggio 9: istruzioni di programmazione
1. Panoramica: questo progetto chiederà all'utente di impostare l'ora corrente all'accensione iniziale del display, l'ora corrente e l'ora per la quale è impostata la sveglia. I pulsanti collegati sopra verranno utilizzati per impostare ogni volta. Da sinistra a destra, sono impostati l'ora corrente, imposta il minuto corrente, imposta AM o PM attuali, imposta l'ora della sveglia, imposta i minuti della sveglia, imposta la sveglia AM o PM. L'ultimo pulsante viene utilizzato per silenziare l'allarme quando suona.
Passaggio 10:
2. La prima cosa che dobbiamo fare è inizializzare la nostra variabile che useremo.
// Inizializza le variabili da utilizzareint hour = 0; // Ora per l'ora corrente int minute = 0; //
Minuto per l'ora corrente int secondo = 0; // Secondo per l'ora corrente
int ora_a = 0; int // Ora per l'ora della sveglia
minuto_a = 0; // Minuto per l'ora della sveglia
bool am_pm = falso; // Attiva/disattiva flag AM/PM. Falso è AM, vero è PM
bool am_pm_a = falso; // Attiva/disattiva AM/PM per l'allarme. Falso è AM, vero è PM
int set_hr = 13; // Usa il pin 13 per impostare l'ora
int set_min = 12; // Usa il pin 12 per impostare i minuti int
set_am_pm = 11; // Usa il pin 11 per impostare am/pm
int set_hr_a = 10; // Usa il pin 10 per impostare l'ora per l'allarme int set_min_a = 9; // Usa il pin 9 per impostare i minuti per l'allarme int set_am_pm_a = 8; // Usa il pin 8 per impostare am/pm per la sveglia
int altoparlante = 7; // Pin da usare per speakerint quiet = 6; // Pin per fermare l'altoparlante
allarme bool = falso; // Contrassegna per attivare/disattivare per continuare ad allarmare
bool quietato = falso; // La bandiera che mostra il silenzio non è stata premuta
int cur_time = 0; // Variabile per l'ora corrente
int etime = 0; // Variabile per il tempo trascorso
Passaggio 11:
3. Successivamente, dobbiamo impostare lo schermo LCD e dire all'utente di impostare l'ora corrente. Poiché questo deve essere fatto solo una volta, lo faremo nella routine di installazione.
void setup() {
// Imposta lo schermo LCD
Serial.begin(9600); // Inizializza seriale a 9600 baud
Serial.write(17); // Accendi la retroilluminazione
Serial.write(24); // Accende il display, con il cursore e senza lampeggiare
Serial.write(12); // Cancella lo schermo
Serial.write(128); // Sposta il cursore nell'angolo in alto a sinistra // Imposta pinModes pinMode(set_hr, INGRESSO); 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(altoparlante, OUTPUT);
pinMode(quiet, INPUT);
// All'accensione iniziale, chiedi all'utente di impostare l'ora corrente. Serial.print("Imposta l'ora corrente"); ritardo (2000);
Serial.write(12);
printTimes();
cur_time = millis(); // Memorizza l'ora corrente}
Passaggio 12:
4. Quindi, nella routine del ciclo, teniamo traccia del tempo e leggiamo lo stato del pulsante per vedere se l'utente sta impostando uno dei tempi.
ciclo vuoto() {
// Tenere il tempo
tenere il tempo();
// Controlla se è il momento di svegliare!
if((hour == hour_a && minute == minute_a && !quieted) || alarm){tone(speaker, 2000, 500); // Invia un suono a 2000 Hz all'altoparlante per 500 ms
ritardo (500); // Ritardo 500 ms if(!alarm){ // Se l'allarme è disattivato, attivalo
}
}
// Se l'utente silenzia l'allarme premendo il pulsante quiet, interrompe l'allarme if(alarm && !quieted && digitalRead(quiet)){
allarme = falso;
calmato = vero; }
// Resetta l'allarme if(!alarm && quieted && minute != minute_a){ quieted = false;
}
// Controlla se i pin impostati vanno in alto e, in tal caso, incrementa il valore corrispondenteif(digitalRead(set_hr) && hour < 12){
ora++;
printTimes();
antirimbalzo();
}
else if (digitalRead(set_hr) && hour == 12){ hour = 1;
printTimes();
antirimbalzo();
}
altro{}
if(digitalRead(set_min) && minuto < 59){
minuto++; printTimes();
antirimbalzo();
}
else if (digitalRead(set_min) && minuto == 59){ minuto = 0;
printTimes();
antirimbalzo();
}
else{}if(digitalRead(set_am_pm) && am_pm){
am_pm = falso;
printTimes();
antirimbalzo();
}
else if (digitalRead(set_am_pm) && !am_pm){ am_pm = true;printTimes();
antirimbalzo();
}
else{}if(digitalRead(set_hr_a) && hour_a < 12){
ora_a++;
printTimes();
antirimbalzo();
}
else if (digitalRead(set_hr_a) && hour_a == 12){hour_a = 1;
printTimes();
antirimbalzo();
}
else{}if(digitalRead(set_min_a) && minute_a < 59){
minuto_a++;
printTimes();
antirimbalzo();
}
else if (digitalRead(set_min) && minute_a == 59){minute_a = 0;
printTimes();
antirimbalzo();
}
else{}if(digitalRead(set_am_pm_a) && am_pm_a){
am_pm_a = falso;
printTimes();
antirimbalzo();
}
else if (digitalRead(set_am_pm_a) && !am_pm_a){am_pm_a = true;
printTimes();
antirimbalzo();
}
altro{}
}
Passaggio 13:
5. Qui noterai un paio di subroutine che ho creato: debounce() e printTimes(). Debounce() viene utilizzato per assicurarci di leggere i pulsanti solo una volta. Poiché Arduino esegue la scansione migliaia di volte al secondo, potrebbe pensare che il pulsante sia stato premuto più volte quando intendevi leggerlo solo una volta. Debounce() bloccherà il programma fino al rilascio del pulsante. printTimes() aggiorna lo schermo LCD, ma poiché si trattava di diversi comandi, li ho digitati una volta e quindi posso chiamare la subroutine ogni volta che cambia il valore dell'ora.
// Mentre viene premuto uno qualsiasi dei pulsanti, rimanere in questa funzione quindi ritardare di 250 ms.
vuoto antirimbalzo(){
while(digitalRead(set_hr) || digitalRead(set_min) ||
digitalRead(set_am_pm) || digitalRead(set_hr_a) ||
digitalRead(set_min_a) || digitalRead(set_am_pm_a)){} ritardo(250);
}
// Stampa i tempi aggiornati se ci sono modifiche
void printTimes(){
Serial.write(12);
Serial.print("Ora attuale:");
Serial.write(148);
if(ora < 10){
Serial.print("0");
}
Serial.print(ora);
Serial.print(":");
if(minuto < 10){
Serial.print("0");
}
Serial.print(minuto);Serial.print(":");
if(secondo < 10){
Serial.print("0");
}
Serial.print(secondo);
se (am_pm){
Serial.print("PM");
}
altro{
Serial.print("AM");
}
Serial.write(168);
Serial.print("Allarme impostato per:");
Serial.write(188);
if(ora_a < 10){
Serial.print("0");
}
Serial.print(hour_a);
Serial.print(":");
if(minuto_a < 10){
Serial.print("0");
}
Serial.print(minuto_a);
if (am_pm_a){
Serial.print("PM");
}
altro{
Serial.print("AM");
}
}
// Incrementa i parametri temporali void
tenere il tempo(){
etime = millis() - cur_time;
if(etime >= 1000 && secondo < 59){
secondo++;
cur_time = millis();
printTimes();
}
else if(etime >= 1000 && secondo == 59 && minuto < 59){ secondo = 0;
minuto++;
cur_time = millis();
printTimes();
}
else if(etime >= 1000 && secondo == 59 && minuto == 59 && ora < 12){
secondo = 0; minuto =
0; ora++; cur_time =
milli(); printTimes();
}
else if(etime >= 1000 && secondo == 59 && minuto == 59 && ora == 12){
secondo = 0; minuto =
0; ora = 1; am_pm =
!am PM;
cur_time = millis();
printTimes();
}
altro{}
}
Passaggio 14:
6. Questo è tutto!
Compila e carica e il gioco è fatto!
Consigliato:
Sveglia intelligente con Magicbit (Arduino): 10 passaggi
Sveglia intelligente utilizzando Magicbit (Arduino): questo tutorial mostra come creare una sveglia intelligente utilizzando il display OLED nella scheda di sviluppo Magicbit senza utilizzare alcun modulo RTC
Sveglia da comodino MP3 con lettera sveglia: 6 passaggi (con immagini)
Sveglia da comodino MP3 con sveglia: per questo progetto ho voluto creare una sveglia da comodino comoda e completamente funzionale. I miei prerequisiti personali per una sveglia da comodino sono: Leggibile a qualsiasi luce, ma non accecante di notte Brani della sveglia MP3 Attira
Sveglia intelligente: una sveglia intelligente realizzata con Raspberry Pi: 10 passaggi (con immagini)
Sveglia intelligente: una sveglia intelligente realizzata con Raspberry Pi: hai mai desiderato un orologio intelligente? Se è così, questa è la soluzione per te! Ho realizzato Smart Alarm Clock, questo è un orologio con cui puoi modificare l'ora della sveglia in base al sito web. Quando la sveglia suona, ci sarà un suono (cicalino) e 2 luci si accenderanno
Bruciatore alimentato tramite USB! Questo progetto può bruciare attraverso plastica/legno/carta (il progetto divertente deve anche essere un legno molto fine): 3 passaggi
Bruciatore alimentato tramite USB! Questo progetto può bruciare attraverso plastica/legno/carta (il progetto divertente deve anche essere un legno molto fine): NON FARLO UTILIZZANDO USB!!!! ho scoperto che può danneggiare il tuo computer da tutti i commenti. il mio computer va bene comunque Utilizzare un caricabatterie per telefono da 600 mA 5 V. ho usato questo e funziona bene e nulla può essere danneggiato se usi una spina di sicurezza per interrompere l'alimentazione
Sveglia LED Sunrise con sveglia con canzone personalizzabile: 7 passaggi (con immagini)
Sveglia a LED all'alba con sveglia personalizzabile: la mia motivazione Quest'inverno la mia ragazza ha avuto molti problemi a svegliarsi al mattino e sembrava soffrire di SAD (disturbo affettivo stagionale). Mi accorgo anche di quanto sia più difficile svegliarsi d'inverno visto che il sole non è ancora arrivato