Obsah:

Budík Arduino: 14 kroků
Budík Arduino: 14 kroků

Video: Budík Arduino: 14 kroků

Video: Budík Arduino: 14 kroků
Video: Arduino návody | První kroky, blikání LED 2024, Červenec
Anonim
Projekt budíku Arduino
Projekt budíku Arduino

V tomto projektu použijeme Arduino Uno k ovládání LCD obrazovky pro zobrazení aktuálního času a času, pro který je nastaven alarm. Pokaždé nastavíme pomocí tlačítek.

Materiály:

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

Krok 1: Pokyny k připojení

Pokyny pro připojení
Pokyny pro připojení

1. Připojte propojovací vodič z 5V pinu na Arduinu k jedné z + kolejnic na prkénku.

Krok 2:

obraz
obraz

2. Připojte propojovací vodič z kolíku GND na Arduinu k - liště vedle + kolejnice, kterou jste vybrali na prkénku.

Krok 3:

obraz
obraz

3. Připojte obrazovku LCD k napájení, uzemnění a kolíku TX (kolík 1).

Krok 4:

obraz
obraz

4. Umístěte 7 tlačítek na prkénko nohama přes mezeru v prkénku.

Krok 5:

obraz
obraz

5. Umístěte 10 kohmové odpory z - kolejnice s kolíkem GND připojeným k dolním levým kolíkům tlačítek.

Krok 6:

obraz
obraz

6. Umístěte propojovací vodiče mezi pravý dolní kolík tlačítek a kolejnici 5V na prkénku.

Krok 7:

obraz
obraz

7. Umístěte propojovací vodiče mezi piny 6, potom 8-13 a kolík na tlačítku, ke kterému je připojen odpor.

Krok 8:

obraz
obraz

8. Poté umístěte svůj piezo reproduktor na prkénko a připojte pin 7 k napájecímu pinu a poté 100 ohmový odpor k zemi.

Krok 9: Pokyny k programování

1. Přehled: Tento projekt požádá uživatele, aby nastavil aktuální čas při počátečním zapnutí na displeji, aktuální čas a čas, na který je nastaven alarm. Tlačítka připojená výše budou použita k nastavení pokaždé. Zleva doprava se nastavuje aktuální hodina, nastavuje aktuální minuta, aktuální AM nebo PM, nastavuje se budík, nastavuje se minuta budíku, nastavuje se budík AM nebo PM. Poslední tlačítko slouží k ztlumení alarmu, když zní.

Krok 10:

2. První věc, kterou musíme udělat, je inicializovat naši proměnnou, kterou použijeme.

// Inicializace proměnných, které mají být použity v hodině = 0; // Hodina pro aktuální čas int minuta = 0; //

Minuta pro aktuální čas int sekunda = 0; // Druhý pro aktuální čas

int hodina_a = 0; int // Hodina pro čas buzení

minute_a = 0; // Minuta pro čas buzení

bool am_pm = false; // Přepínací příznak dopoledne/odpoledne. False je AM, True je PM

bool am_pm_a = false; // Přepínací příznak AM/PM pro alarm. False je AM, True je PM

int set_hr = 13; // K nastavení hodiny použijte kolík 13

int set_min = 12; // Pomocí kolíku 12 nastavte minutu int

set_am_pm = 11; // Pomocí kolíku 11 nastavte dopoledne/odpoledne

int set_hr_a = 10; // Použijte pin 10 k nastavení hodiny pro alarm int set_min_a = 9; // Pomocí kolíku 9 nastavte minutu alarmu int set_am_pm_a = 8; // Pomocí kolíku 8 nastavte am/pm pro alarm

int reproduktor = 7; // Připnutí k použití pro reproduktorintich tichý = 6; // Pin pro zastavení reproduktoru

poplach bool = false; // Vlajka pro přepnutí, aby zůstala alarmující

bool utišil = false; // Vlajka ukazující ticho nebyla stisknuta

int cur_time = 0; // Proměnná pro aktuální čas

int etime = 0; // Proměnná za uplynulý čas

Krok 11:

3. Dále musíme nastavit LCD obrazovku a sdělit uživateli, aby nastavil aktuální čas. Protože to stačí provést pouze jednou, uděláme to v rutině nastavení.

neplatné nastavení () {

// Nastavení LCD obrazovky

Serial.begin (9600); // Inicializace sériového připojení na 9600 baudů

Serial.write (17); // Zapněte zadní světlo

Serial.write (24); // Zapněte displej s kurzorem a bez mrknutí

Serial.write (12); // Vymazání obrazovky

Serial.write (128); // Přesuňte kurzor do levé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);

// Při počátečním napájení nechte uživatel nastavit aktuální čas. Serial.print ("Nastavit aktuální čas"); zpoždění (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // Uložení aktuálního času}

Krok 12:

4. Potom v rutině smyčky sledujeme čas a čteme stav tlačítek, abychom zjistili, zda uživatel nastavuje některý z časů.

prázdná smyčka () {

// Dodržuj čas

dodržuj čas();

// Zkontrolujte, zda je čas na poplach!

if ((hodina == hodina_a && minuta == minuta_a &&! ztišena) || alarm) {tón (reproduktor, 2000, 500); // Výstup zvuku 2000 Hz do reproduktoru po dobu 500 ms

zpoždění (500); // Zpoždění 500 ms, pokud (! Alarm) {// Pokud je alarm vypnutý, zapněte jej

}

}

// Pokud uživatel ztiší alarm stisknutím tichého tlačítka, přerušte alarm, pokud (alarm &&! Tichý && digitalRead (tichý)) {

alarm = falešný;

utišil = true; }

// Reset alarmu if (! Alarm && quieted && minute! = Minute_a) {quieted = false;

}

// Zkontrolujte, zda se nastavené piny pohybují vysoko, a pokud ano, zvyšte odpovídající hodnotu if (digitalRead (set_hr) && hour <12) {

hodina ++;

printTimes ();

debounce ();

}

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

printTimes ();

debounce ();

}

jiný{}

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

minuta ++; printTimes ();

debounce ();

}

else if (digitalRead (set_min) && minute == 59) {minut = 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) {

minuta_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 ();

}

jiný{}

}

Krok 13:

5. Zde si všimnete několika podprogramů, které jsem vytvořil - debounce () a printTimes (). Debounce () se používá k zajištění toho, abychom tlačítka přečetli pouze jednou. Protože Arduino skenuje tisíckrát za sekundu, může si myslet, že tlačítko bylo stisknuto několikrát, když jste zamýšleli, aby bylo přečteno pouze jednou. Program Debounce () zmrazí program, dokud tlačítko neuvolníte. printTimes () aktualizuje obrazovku LCD, ale protože se jednalo o několik příkazů, jednou jsem je zadal a poté jsem mohl zavolat podprogram kdykoli se změní hodnota času.

// Zatímco se některá z tlačítek mačkají, zůstaňte v této funkci a poté zdržte 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)) {} zpoždění (250);

}

// Pokud dojde k nějakým změnám, vytiskne aktualizované časy

zrušit printTimes () {

Serial.write (12);

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

Serial.write (148);

if (hodina <10) {

Serial.print ("0");

}

Serial.print (hodina);

Serial.print (":");

if (minuta <10) {

Serial.print ("0");

}

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

if (druhý <10) {

Serial.print ("0");

}

Serial.print (druhý);

if (am_pm) {

Serial.print („PM“);

}

jiný{

Serial.print („AM“);

}

Serial.write (168);

Serial.print ("Sada alarmů pro:");

Serial.write (188);

if (hour_a <10) {

Serial.print ("0");

}

Serial.print (hodina_a);

Serial.print (":");

if (minute_a <10) {

Serial.print ("0");

}

Serial.print (minute_a);

if (am_pm_a) {

Serial.print („PM“);

}

jiný{

Serial.print („AM“);

}

}

// Zvýšení neplatnosti časových parametrů

dodržuj čas(){

etime = millis () - cur_time;

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

druhý ++;

cur_time = millis ();

printTimes ();

}

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

minuta ++;

cur_time = millis ();

printTimes ();

}

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

sekunda = 0; minuta =

0; hodina ++; cur_time =

milis (); printTimes ();

}

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

sekunda = 0; minuta =

0; hodina = 1; dopoledne =

!dopoledne odpoledne;

cur_time = millis ();

printTimes ();

}

jiný{}

}

Krok 14:

6. To je ono!

Zkompilovat a nahrát a máte hotovo!

Doporučuje: