Obsah:
- Krok 1: Pokyny k připojení
- Krok 2:
- Krok 3:
- Krok 4:
- Krok 5:
- Krok 6:
- Krok 7:
- Krok 8:
- Krok 9: Pokyny k programování
- Krok 10:
- Krok 11:
- Krok 12:
- Krok 13:
- Krok 14:
Video: Budík Arduino: 14 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
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í
1. Připojte propojovací vodič z 5V pinu na Arduinu k jedné z + kolejnic na prkénku.
Krok 2:
2. Připojte propojovací vodič z kolíku GND na Arduinu k - liště vedle + kolejnice, kterou jste vybrali na prkénku.
Krok 3:
3. Připojte obrazovku LCD k napájení, uzemnění a kolíku TX (kolík 1).
Krok 4:
4. Umístěte 7 tlačítek na prkénko nohama přes mezeru v prkénku.
Krok 5:
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:
6. Umístěte propojovací vodiče mezi pravý dolní kolík tlačítek a kolejnici 5V na prkénku.
Krok 7:
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:
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:
Chytrý budík využívající Magicbit (Arduino): 10 kroků
Inteligentní budík pomocí Magicbit (Arduino): Tento tutoriál ukazuje, jak vytvořit inteligentní budík pomocí OLED displeje na desce Magicbit dev bez použití jakéhokoli modulu RTC
Budík Arduino se snímačem teploty: 5 kroků
Budík Arduino se snímačem teploty: Arduino je velmi snadný a levný mikrořadič. a snadno se ovládají. Co tedy v tomto projektu očekáváte … použijeme RTC s tak přesným nastavením časového alarmu, které je dostatečně hlasité na to, aby probudilo vaši teplotu místnosti, pokud chcete sledovat clic
Inteligentní budík: inteligentní budík vyrobený z Raspberry Pi: 10 kroků (s obrázky)
Chytrý budík: Chytrý budík vyrobený z Raspberry Pi: Chtěli jste někdy chytré hodiny? Pokud ano, toto je řešení pro vás! Vytvořil jsem inteligentní budík, toto jsou hodiny, u kterých můžete podle času na webu změnit čas budíku. Když se spustí alarm, ozve se zvuk (bzučák) a 2 kontrolky
DIY Arduino binární budík: 14 kroků (s obrázky)
DIY Arduino binární budík: Jsou to opět klasické binární hodiny! Ale tentokrát s ještě více doplňkovými funkcemi! V tomto návodu vám ukážu, jak pomocí Arduina postavit binární budík, který vám může ukázat nejen čas, ale i datum, měsíc, dokonce i s časovačem a zábavou s budíkem
Slap budík s Arduino: 13 kroků (s obrázky)
Slap Alarm Clock With Arduino: Nevím, jak vy, ale jednoduchý budík mě nedokáže probudit. Potřebuji k probuzení světlo, zvuk a dokonce i měkké plácnutí. Žádný budík mě neláká, a tak jsem se rozhodl udělat ze sebe takového, který by mě hodil vzbudit. I když se zdá, že budík