Tartalomjegyzék:

Arduino ébresztőóra projekt: 14 lépés
Arduino ébresztőóra projekt: 14 lépés

Videó: Arduino ébresztőóra projekt: 14 lépés

Videó: Arduino ébresztőóra projekt: 14 lépés
Videó: #1 - Mi az az Arduino? 2024, Július
Anonim
Arduino ébresztőóra projekt
Arduino ébresztőóra projekt

Ebben a projektben az Arduino Uno -t használjuk az LCD képernyő vezérlésére, hogy megjelenítse a riasztás aktuális idejét és idejét. Minden alkalommal gombokat használunk a beállításhoz.

Anyagok:

  • Arduino Uno -
  • Breadboard -
  • Jumper vezetékek (x13+) -
  • 10 kohm ellenállás (x4) -
  • LCD képernyő -
  • 7 gomb-https://vilros.com/collections/raspberry-pi-acces…
  • Piezo hangszóró -

1. lépés: Csatlakoztatási utasítások

Csatlakoztatási utasítások
Csatlakoztatási utasítások

1. Csatlakoztasson egy áthidaló vezetéket az Arduino 5V -os tűjéről a kenyértáblán lévő + sínek egyikéhez.

2. lépés:

Kép
Kép

2. Csatlakoztasson egy jumper vezetéket az Arduino GND csapjától a - sínhez a + sín mellett, amelyet a kenyértáblán választott.

3. lépés:

Kép
Kép

3. Csatlakoztassa az LCD -képernyőt a tápellátáshoz, a földeléshez és a TX -tűhöz (1. tű).

4. lépés:

Kép
Kép

4. Helyezzen 7 gombot a kenyértáblára úgy, hogy a lábak a kenyértábla résén átmenjenek.

5. lépés:

Kép
Kép

5. Helyezzen 10 kohm ellenállást a - sínről a GND tűvel a gombok bal alsó csapjaihoz.

6. lépés:

Kép
Kép

6. Helyezze az áthidaló vezetékeket a gombok jobb alsó csapja és a kenyértáblán lévő 5 V -os sín közé.

7. lépés:

Kép
Kép

7. Helyezze az áthidaló vezetékeket a 6., majd a 8-13. És az ellenálláshoz csatlakoztatott gomb csapjai közé.

8. lépés:

Kép
Kép

8. Ezután helyezze a Piezo hangszóróját a kenyérlapra, és csatlakoztassa a 7 -es tüskét a hálózati csatlakozóhoz, majd egy 100 ohmos ellenállást a földhöz.

9. lépés: Programozási utasítások

1. Áttekintés: Ez a projekt felkéri a felhasználót, hogy állítsa be az aktuális időt a kijelzőn az első bekapcsoláskor, az aktuális időt és az ébresztési időt. A fent csatlakoztatott gombokkal minden alkalommal lehet beállítani. Balról jobbra állítják be az aktuális órát, az aktuális percet, az aktuális AM vagy PM beállítást, az ébresztési órát, az ébresztési percet, az AM vagy a PM beállítást. Az utolsó gomb a riasztás elnémítására szolgál, amikor megszólal.

10. lépés:

2. Az első dolog, amit meg kell tennünk, inicializáljuk a használni kívánt változót.

// A használandó változók inicializálásaint = 0; // Óra az aktuális időre int perc = 0; //

Az aktuális idő perce int másodperc = 0; // Második a jelenlegi időre

int óra_a = 0; int // Óra riasztási időre

perc_a = 0; // perc az ébresztési időhöz

bool am_pm = hamis; // AM/PM toggle flag. Hamis a délelőtt, igaz a PM

bool am_pm_a = hamis; // AM/PM toggle flag for alarm. Hamis a délelőtt, igaz a PM

int set_hr = 13; // Használja a 13 -as tűt az óra beállításához

int set_min = 12; // A 12. tűvel állítsa be a perc int

set_am_pm = 11; // Használja a 11 -es tűt az am/pm beállításához

int set_hr_a = 10; // A 10. tűvel állítsa be a riasztás óráját int set_min_a = 9; // A 9. tűvel állítsa be a riasztás percét int set_am_pm_a = 8; // A 8 -as érintkezővel állítsa be az am/pm riasztást

int hangszóró = 7; // Hangszóróhoz használandó tűcsend csendes = 6; // Rögzítés a hangszóró leállításához

bool riasztás = hamis; // Megjelölés a váltáshoz, hogy továbbra is riasztó legyen

bool csendes = hamis; // A csendet jelző zászlót nem nyomták meg

int cur_time = 0; // Változó az aktuális időre

int etime = 0; // Változó az eltelt időre

11. lépés:

3. Ezután be kell állítanunk az LCD képernyőt, és meg kell mondanunk a felhasználónak, hogy állítsa be a pontos időt. Mivel ezt csak egyszer kell elvégezni, a beállítási rutin szerint fogjuk megtenni.

void setup () {

// LCD képernyő beállítása

Sorozat.kezdet (9600); // Inicializálja a sorozatot 9600 baudon

Soros.írás (17); // Kapcsolja be a háttérvilágítást

Soros.írás (24); // Kapcsolja be a kijelzőt, kurzorral és villogás nélkül

Soros.írás (12); // A képernyő törlése

Soros.írás (128); // Kurzor áthelyezése a bal felső sarokba // PinModes pinMode beállítása (set_hr, BEMENET); 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 (hangszóró, OUTPUT);

pinMode (csendes, BEMENET);

// Az első bekapcsoláskor a felhasználó állítsa be az aktuális időt. Serial.print ("Az aktuális idő beállítása"); késleltetés (2000);

Soros.írás (12);

printTimes ();

cur_time = millis (); // Az aktuális idő tárolása}

12. lépés:

4. Ezután a ciklus rutinjában nyomon követjük az időt, és elolvassuk a gomb állapotát, hogy lássuk, a felhasználó beállítja -e valamelyik időt.

void loop () {

// Tartsd meg az időt

keepTime ();

// Ellenőrizze, hogy ideje -e riasztani!

if ((óra == óra_a && perc == perc_a &&! elcsendesítve) || riasztás) {hang (hangszóró, 2000, 500); // 2000 Hz -es hangot ad ki a hangszóróba 500 ms -ig

késleltetés (500); // Késleltesse az 500 ms -ot, ha (! Alarm) {// Ha a riasztás ki van kapcsolva, kapcsolja be

}

}

// Ha a felhasználó a csendes gomb megnyomásával elnémítja a riasztást, akkor hagyja abba a riasztást, ha (alarm &&! Quieted && digitalRead (csendes)) {

riasztás = hamis;

csendes = igaz; }

// Állítsa vissza a riasztást, ha (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Ellenőrizze, hogy a beállított csapok magasak -e, és ha igen, akkor növelje a megfelelő értéket if (digitalRead (set_hr) && óra <12) {

óra ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

más{}

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

perc ++; printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

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

am_pm = hamis;

printTimes ();

debounce ();

}

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

debounce ();

}

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

óra_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) {

perc_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 = hamis;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

más{}

}

13. lépés:

5. Itt észrevesz néhány általam létrehozott alprogramot - debounce () és printTimes (). A Debounce () használatával biztosíthatjuk, hogy csak egyszer olvassuk el a gombokat. Mivel az Arduino másodpercenként ezerszer szkennel, azt gondolhatja, hogy a gombot többször megnyomták, amikor csak egyszer szándékozott elolvasni. A Debounce () leállítja a programot a gomb elengedéséig. A printTimes () frissíti az LCD képernyőt, de mivel ez több parancs volt, egyszer begépeltem őket, majd bármikor meghívhatom az alprogramot, amikor egy időérték megváltozik.

// Amíg bármelyik gombot megnyomja, maradjon ebben a funkcióban, majd késleltesse a 250 ms -ot.

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)) {} delay (250);

}

// Kinyomtatja a frissített időket, ha vannak változások

void printTimes () {

Soros.írás (12);

Serial.print ("Jelenlegi idő:");

Soros.írás (148);

ha (óra <10) {

Serial.print ("0");

}

Soros.nyomtatás (óra);

Serial.print (":");

ha (perc <10) {

Serial.print ("0");

}

Soros.nyomtatás (perc); Soros.nyomtatás (":");

ha (második <10) {

Serial.print ("0");

}

Soros.nyomtatás (második);

if (am_pm) {

Serial.print ("PM");

}

más{

Serial.print ("AM");

}

Soros.írás (168);

Serial.print ("Alarm Set for:");

Soros.írás (188);

ha (óra_a <10) {

Serial.print ("0");

}

Soros.nyomtatás (óra_a);

Serial.print (":");

ha (perc_a <10) {

Serial.print ("0");

}

Soros.nyomtatás (perc_a);

if (am_pm_a) {

Serial.print ("PM");

}

más{

Serial.print ("AM");

}

}

// Az időparaméterek növelése érvénytelen

keepTime () {

etime = millis () - cur_time;

if (etime> = 1000 && másodperc <59) {

második ++;

cur_time = millis ();

printTimes ();

}

egyébként if (etime> = 1000 && second == 59 && minute <59) {second = 0;

perc ++;

cur_time = millis ();

printTimes ();

}

egyébként if (etime> = 1000 && second == 59 && minute == 59 && óra <12) {

második = 0; perc =

0; óra ++; cur_time =

millis (); printTimes ();

}

egyébként if (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

második = 0; perc =

0; óra = 1; am_pm =

!délelőtt délután;

cur_time = millis ();

printTimes ();

}

más{}

}

14. lépés:

6. Ennyi!

Fordítsa össze és töltse fel, és kész!

Ajánlott: