Obsah:

Budík Arduino: 14 krokov
Budík Arduino: 14 krokov

Video: Budík Arduino: 14 krokov

Video: Budík Arduino: 14 krokov
Video: Набор Ардуино для начинающих 📟 с Алиэкспресс. Обзор набора модулей Arduino Unoдля обучения 2024, Júl
Anonim
Projekt budíka Arduino
Projekt budíka Arduino

V tomto projekte použijeme Arduino Uno na ovládanie LCD obrazovky, aby sme ukázali aktuálny čas a čas, na ktorý je nastavený alarm. Na nastavenie použijeme zakaždým tlačidlá.

Materiály:

  • Arduino Uno -
  • Breadboard -
  • Prepojovacie vodiče (x13+) -
  • Rezistory 10 kohm (x4) -
  • LCD obrazovka -
  • 7 tlačidiel-https://vilros.com/collections/raspberry-pi-acces…
  • Piezo reproduktor -

Krok 1: Pokyny na pripojenie

Pokyny na pripojenie
Pokyny na pripojenie

1. Pripojte prepojovací kábel z 5V kolíka na Arduine k jednej z + koľajničiek na doske.

Krok 2:

Obrázok
Obrázok

2. Pripojte prepojovací vodič z kolíka GND na Arduine k - lište vedľa + lišty +, ktorú ste vybrali na doske.

Krok 3:

Obrázok
Obrázok

3. Pripojte obrazovku LCD k napájaniu, uzemneniu a kolíku TX (kolík 1).

Krok 4:

Obrázok
Obrázok

4. Umiestnite 7 tlačidiel na dosku na chlieb tak, aby boli nohy cez medzeru v doske na chlieb.

Krok 5:

Obrázok
Obrázok

5. Umiestnite 10 kohmové odpory z - lišty s kolíkom GND, ktorý je k nemu pripojený, k dolným ľavým kolíkom tlačidiel.

Krok 6:

Obrázok
Obrázok

6. Umiestnite prepojovacie vodiče medzi pravý dolný kolík tlačidiel a 5V koľajnicu na vašom doske.

Krok 7:

Obrázok
Obrázok

7. Umiestnite prepojovacie vodiče medzi kolíky 6, potom 8-13 a kolík na tlačidlo, ku ktorému je odpor pripojený.

Krok 8:

Obrázok
Obrázok

8. Ďalej umiestnite svoj piezo reproduktor na dosku a zapojte pin 7 k napájaciemu kolíku a potom 100 ohmový odpor k zemi.

Krok 9: Pokyny na programovanie

1. Prehľad: Tento projekt požiada používateľa, aby nastavil aktuálny čas pri počiatočnom zapnutí displeja, aktuálny čas a čas, na ktorý je nastavený alarm. Tlačidlá zapojené vyššie budú použité na nastavenie zakaždým. Zľava doprava sa nastavuje aktuálna hodina, aktuálna minúta, aktuálna dopoludnia alebo popoludní, nastavená hodina budíka, nastavená minúta budíka, budík dopoludnia alebo popoludní. Posledné tlačidlo slúži na stíšenie alarmu, keď znie.

Krok 10:

2. Prvá vec, ktorú musíme urobiť, je inicializácia našej premennej, ktorú použijeme.

// Inicializácia premenných, ktoré sa majú použiťint hodina = 0; // Hodina pre aktuálny čas int minúta = 0; //

Minúta aktuálneho času int sekunda = 0; // Druhý pre aktuálny čas

int hodina_a = 0; int // Hodina pre budík

minúta_a = 0; // Minúta času budíka

bool am_pm = false; // Prepínač AM/PM. False je AM, Pravda je PM

bool am_pm_a = false; // Prepínač AM/PM pre alarm. False je AM, Pravda je PM

int set_hr = 13; // Na nastavenie hodiny použite kolík 13

int set_min = 12; // Pomocou kolíka 12 nastavte minútový int

set_am_pm = 11; // Na nastavenie dopoludnia/večera použite kolík 11

int set_hr_a = 10; // Použite pin 10 na nastavenie hodiny pre alarm int set_min_a = 9; // Pomocou kolíka 9 nastavte minútu alarmu int set_am_pm_a = 8; // Pomocou kolíka 8 nastavte budík ráno/večer

int reproduktor = 7; // Pin, ktorý sa použije na tichý reproduktor = 6; // Reproduktor zastavíte pripnutím

poplach bool = falošný; // Vlajka na prepnutie, aby zostala alarmujúca

bool utíšený = nepravda; // Vlajka zobrazujúca ticho nebola stlačená

int cur_time = 0; // Premenná pre aktuálny čas

int etime = 0; // Premenná za uplynulý čas

Krok 11:

3. Ďalej musíme nastaviť LCD obrazovku a povedať používateľovi, aby nastavil aktuálny čas. Pretože to treba urobiť iba raz, urobíme to v rutine nastavenia.

neplatné nastavenie () {

// Nastavenie obrazovky LCD

Serial.begin (9600); // Inicializácia sériového čísla na 9600 baudov

Serial.write (17); // Zapnite zadné svetlo

Serial.write (24); // Zapnite displej s kurzorom a bez žmurkania

Serial.write (12); // Vymažte obrazovku

Serial.write (128); // Presuňte kurzor do ľavého horného rohu // Set pinModes pinMode (set_hr, VSTUP); 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 (reproduktor, VÝSTUP);

pinMode (tichý, VSTUP);

// Pri prvom zapnutí nechajte používateľ nastaviť aktuálny čas. Serial.print ("Nastaviť aktuálny čas"); oneskorenie (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Uložiť aktuálny čas}

Krok 12:

4. Potom v rutine slučky sledujeme čas a čítame stavy tlačidiel, aby sme zistili, či používateľ nastavuje niektorý z časov.

prázdna slučka () {

// Nechaj si čas

keepTime ();

// Skontrolujte, či nie je čas na poplach!

if ((hodina == hodina_a && minúta == minúta_a &&! stíšená) || alarm) {tón (reproduktor, 2000, 500); // Výstup zvuku 2000 Hz do reproduktora po dobu 500 ms

oneskorenie (500); // Oneskorenie 500 ms, ak (! Alarm) {// Ak je alarm vypnutý, zapnite ho

}

}

// Ak používateľ stíši alarm stlačením tichého tlačidla, prestaňte ho upozorňovať, ak (alarm &&! Tichý && digitalRead (tichý)) {

alarm = falošný;

potichu = pravda; }

// Resetujte alarm, ak (! Alarm && stíšený && minúta! = Minúta_a) {quieted = false;

}

// Skontrolujte, či sú nastavené kolíky vysoké, a ak áno, zvýšte zodpovedajúcu hodnotu if (digitalRead (set_hr) && hour <12) {

hodina ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

inak {}

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

minúta ++; printTimes ();

debounce ();

}

else if (digitalRead (set_min) && minúta == 59) {minúta = 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) {

hodina_a ++;

printTimes ();

debounce ();

}

else if (digitalRead (set_hr_a) && hour_a == 12) {hodina_a = 1;

printTimes ();

debounce ();

}

else {} if (digitalRead (set_min_a) && minute_a <59) {

minúta_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 ();

}

inak {}

}

Krok 13:

5. Tu si všimnete niekoľko podprogramov, ktoré som vytvoril - debounce () a printTimes (). Debounce () sa používa na zaistenie toho, aby sme tlačidlá čítali iba raz. Pretože Arduino skenuje tisíckrát za sekundu, môže si myslieť, že bolo tlačidlo stlačené niekoľkokrát, keď ste ho plánovali prečítať iba raz. Program Debounce () zmrazí program, kým neuvoľníte tlačidlo. printTimes () aktualizuje obrazovku LCD, ale pretože to bolo niekoľko príkazov, zadal som ich raz a potom môžem zavolať podprogram kedykoľvek sa zmení hodnota času.

// Kým sa stlačí akékoľvek z tlačidiel, zostaňte v tejto funkcii a potom oneskorte 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)) {} oneskorenie (250);

}

// V prípade akýchkoľvek zmien vytlačí aktualizované časy

void printTimes () {

Serial.write (12);

Serial.print ("Aktuálny čas:");

Serial.write (148);

ak (hodina <10) {

Serial.print ("0");

}

Serial.print (hodina);

Serial.print (":");

ak (minúta <10) {

Serial.print ("0");

}

Serial.print (minúta); Serial.print (":");

ak (druhý <10) {

Serial.print ("0");

}

Serial.print (druhý);

if (am_pm) {

Serial.print ("PM");

}

inak {

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("Sada alarmov pre:");

Serial.write (188);

ak (hodina_a <10) {

Serial.print ("0");

}

Serial.print (hodina_a);

Serial.print (":");

ak (minúta_a <10) {

Serial.print ("0");

}

Serial.print (minúta_a);

ak (am_pm_a) {

Serial.print ("PM");

}

inak {

Serial.print ("AM");

}

}

// Zvýšte neplatnosť parametrov času

keepTime () {

etime = millis () - cur_time;

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

druhý ++;

cur_time = millis ();

printTimes ();

}

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

minúta ++;

cur_time = millis ();

printTimes ();

}

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

sekunda = 0; minúta =

0; hodina ++; cur_time =

milis (); printTimes ();

}

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

sekunda = 0; minúta =

0; hodina = 1; dopoludnia =

!dopoludnia popoludní;

cur_time = millis ();

printTimes ();

}

inak {}

}

Krok 14:

6. To je všetko!

Skompilovajte a nahrajte a máte hotovo!

Odporúča: