Cuprins:

Proiectul Ceas cu alarmă Arduino: 14 pași
Proiectul Ceas cu alarmă Arduino: 14 pași

Video: Proiectul Ceas cu alarmă Arduino: 14 pași

Video: Proiectul Ceas cu alarmă Arduino: 14 pași
Video: I-am luat Rolex in Dubai si tot nu ma suporta... 2024, Noiembrie
Anonim
Proiectul Ceas cu alarmă Arduino
Proiectul Ceas cu alarmă Arduino

În acest proiect, vom folosi Arduino Uno pentru a controla un ecran LCD pentru a arăta ora și ora curente pentru care este setată o alarmă. Vom folosi butoane pentru a seta de fiecare dată.

Materiale:

  • Arduino Uno -
  • Breadboard -
  • Jumper Wires (x13 +) -
  • 10 rezistențe kohm (x4) -
  • Ecran LCD -
  • 7 Butoane -
  • Piezo Speaker -

Pasul 1: Instrucțiuni de conectare

Instrucțiuni de conectare
Instrucțiuni de conectare

1. Conectați un cablu jumper de la pinul de 5V de pe Arduino la una dintre șinele + de pe panou.

Pasul 2:

Imagine
Imagine

2. Conectați un cablu jumper de la pinul GND de pe Arduino la șina - de lângă șina + pe care ați ales-o pe panou.

Pasul 3:

Imagine
Imagine

3. Conectați ecranul LCD la alimentare, împământare și pinul TX (pinul 1).

Pasul 4:

Imagine
Imagine

4. Așezați 7 butoane pe panou cu picioarele peste golul din panou.

Pasul 5:

Imagine
Imagine

5. Așezați 10 rezistențe de kohm de pe șină - cu pinul GND conectat la pinii stânga jos ai butoanelor.

Pasul 6:

Imagine
Imagine

6. Așezați cablurile jumperului între știftul din dreapta jos al butoanelor și șina de 5V de pe panoul dvs.

Pasul 7:

Imagine
Imagine

7. Plasați firele jumperului între pinii 6, apoi 8-13 și pinul de pe butonul la care este conectat rezistorul.

Pasul 8:

Imagine
Imagine

8. Apoi, așezați difuzorul Piezo pe panou și conectați pinul 7 la pinul de alimentare, apoi un rezistor de 100 ohmi la masă.

Pasul 9: Instrucțiuni de programare

1. Prezentare generală: Acest proiect va cere utilizatorului să seteze ora curentă la pornirea inițială pe afișaj, ora curentă și ora pentru care este setată alarma. Butoanele conectate mai sus vor fi utilizate pentru a seta de fiecare dată. De la stânga la dreapta, sunt setate ora curentă, setează minutul curent, setează actualul AM sau PM, setează ora alarmei, setează minutul alarmei, setează alarma AM sau PM. Ultimul buton este utilizat pentru a reduce alarma atunci când sună.

Pasul 10:

2. Primul lucru pe care trebuie să-l facem este să inițializăm variabila pe care o vom folosi.

// Inițializați variabilele care trebuie utilizate în oră = 0; // Ora pentru ora curentă int minut = 0; //

Minut pentru ora curentă int a doua = 0; // A doua pentru ora curentă

int hour_a = 0; int // Ora pentru ora de alarmă

minute_a = 0; // Minut pentru ora alarmei

bool am_pm = false; // Semnalul de comutare AM / PM. Fals este AM, True este PM

bool am_pm_a = false; // AM / PM comută steagul pentru alarmă. Fals este AM, True este PM

int set_hr = 13; // Utilizați pinul 13 pentru a seta ora

int set_min = 12; // Utilizați pinul 12 pentru a seta minutul int

set_am_pm = 11; // Utilizați pinul 11 pentru a seta am / pm

int set_hr_a = 10; // Utilizați pinul 10 pentru a seta ora pentru alarmă int set_min_a = 9; // Folosiți pinul 9 pentru a seta minutul pentru alarmă int set_am_pm_a = 8; // Utilizați pinul 8 pentru a seta am / pm pentru alarmă

difuzor int = 7; // Pinul de utilizat pentru speakerint silent = 6; // Fixați pentru a opri difuzorul

bool alarm = fals; // Semnalizați pentru a comuta pentru a rămâne alarmant

bool quieted = fals; // Steagul care arată liniște nu a fost apăsat

int cur_time = 0; // Variabilă pentru ora curentă

int etime = 0; // Variabilă pentru timpul scurs

Pasul 11:

3. Apoi, trebuie să configurăm ecranul LCD și să spunem utilizatorului să seteze ora curentă. Deoarece acest lucru trebuie făcut o singură dată, o vom face în rutina de configurare.

configurare nulă () {

// Configurați ecranul LCD

Serial.begin (9600); // Inițializați serialul la 9600 baud

Serial.write (17); // Aprindeți lumina din spate

Serial.write (24); // Porniți afișajul, cu cursorul și fără clipire

Serial.write (12); // Ștergeți ecranul

Serial.write (128); // Mutați cursorul în colțul din stânga sus // Setați pinModes pinMode (set_hr, INTRARE); 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 (difuzor, OUTPUT);

pinMode (silențios, INPUT);

// La pornirea inițială, solicitați utilizatorului să stabilească ora curentă. Serial.print („Setați ora curentă”); întârziere (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Stocați ora curentă}

Pasul 12:

4. Apoi, în rutina de buclă, ținem evidența timpului și citim starea butonului pentru a vedea dacă utilizatorul setează oricare dintre ori.

bucla nulă () {

// Tine timpul

tine timpul();

// Verificați dacă este timpul să alarmați!

if ((hour == hour_a && minute == minute_a &&! calmed) || alarm) {ton (difuzor, 2000, 500); // Emiteți un sunet de 2000 Hz la difuzor pentru 500 ms

întârziere (500); // Întârziți 500 ms dacă (! Alarmă) {// Dacă alarma este dezactivată, activați-o

}

}

// Dacă utilizatorul tace alarma apăsând butonul silențios, opriți alarmarea dacă (alarmă &&! Silențiat && digitalRead (silențios)) {

alarmă = falsă;

quieted = adevărat; }

// Resetați alarma dacă (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Verificați dacă pinii stabiliți cresc și, dacă da, creșteți valoarea corespunzătoare (digitalRead (set_hr) && hour <12) {

ora ++;

printTimes ();

debounce ();

}

else if (digitalRead (set_hr) && hour == 12) {hour = 1;

printTimes ();

debounce ();

}

altceva {}

if (digitalRead (set_min) && minute <59) {

minute ++; printTimes ();

debounce ();

}

else if (digitalRead (set_min) && minute == 59) {minute = 0;

printTimes ();

debounce ();

}

else {} if (digitalRead (set_am_pm) && am_pm) {

am_pm = false;

printTimes ();

debounce ();

}

else if (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

else {} if (digitalRead (set_hr_a) && hour_a <12) {

ora_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) {

minute_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 = false;

printTimes ();

debounce ();

}

else if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

altceva {}

}

Pasul 13:

5. Aici, veți observa câteva subrutine pe care le-am creat - debounce () și printTimes (). Debounce () este folosit pentru a ne asigura că citim butoanele o singură dată. Deoarece Arduino scanează de mii de ori pe secundă, s-ar putea crede că butonul a fost apăsat de mai multe ori când intenționați să fie citit o singură dată. Debounce () va îngheța programul până când butonul este eliberat. printTimes () actualizează ecranul LCD, dar din moment ce erau mai multe comenzi, le-am tastat o dată și apoi pot apela subrutina oricând se schimbă valoarea orei.

// În timp ce oricare dintre butoane este apăsat, rămâneți în această funcție, apoi întârziați 250 ms.

void 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)) {} întârziere (250);

}

// Tipărește orele actualizate dacă există modificări

void printTimes () {

Serial.write (12);

Serial.print ("Ora curentă:");

Serial.write (148);

if (ora <10) {

Serial.print („0”);

}

Serial.print (oră);

Serial.print (":");

dacă (minut <10) {

Serial.print („0”);

}

Serial.print (minut); Serial.print (":");

if (al doilea <10) {

Serial.print („0”);

}

Serial.print (al doilea);

if (am_pm) {

Serial.print („PM”);

}

altceva {

Serial.print („AM”);

}

Serial.write (168);

Serial.print ("Set de alarmă pentru:");

Serial.write (188);

if (ora_a <10) {

Serial.print („0”);

}

Serial.print (hour_a);

Serial.print (":");

if (minute_a <10) {

Serial.print („0”);

}

Serial.print (minute_a);

if (am_pm_a) {

Serial.print („PM”);

}

altceva {

Serial.print („AM”);

}

}

// Măriți parametrii de timp anulați

tine timpul(){

etime = millis () - cur_time;

if (etime> = 1000 && second <59) {

al doilea ++;

cur_time = millis ();

printTimes ();

}

else if (etime> = 1000 && second == 59 && minute <59) {second = 0;

minut ++;

cur_time = millis ();

printTimes ();

}

altfel dacă (etime> = 1000 && second == 59 && minute == 59 && hour <12) {

al doilea = 0; minut =

0; ora ++; cur_time =

milis (); printTimes ();

}

else if (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

al doilea = 0; minut =

0; ora = 1; am_pm =

!am pm;

cur_time = millis ();

printTimes ();

}

altceva {}

}

Pasul 14:

6. Gata!

Compilați și încărcați și ați terminat!

Recomandat: