Obsah:
Video: Přesné hodiny: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
Všichni potřebujeme hodiny, tak proč si nevytvořit vlastní v tomto instruktážním návodu Ukážu vám, jak si hodiny Precision vyrobit, jakmile nastavíte, budou automaticky sledovat aktuální čas na pozadí všeho. Zatímco také potřebuje jen velmi málo zásob a nulové pájení.
Zásoby
Nejprve budete potřebovat Arduino, ale jakékoli Arduino bude fungovat
Dále budete potřebovat sortiment generických propojovacích vodičů.
2 12mm Sparkfun tlačítkové spínače
Tradiční prkénko
a 16kolíkový displej LCD 1602
Krok 1: Zapojení
Aby tyto hodiny fungovaly, musíte je zapojit velmi specifickým způsobem, jinak dostanete na obrazovku spoustu náhodných čísel místo času.
Krok 2: Kód
Protože nepoužíváme RTC, kód bude trochu dlouhý, ale naštěstí jsem pro vás udělal veškerou tvrdou práci a poskytl ji zde.
Stačí to zkopírovat a vložit do Arduino IDE nebo webového editoru.
#include "LiquidCrystal.h"
// Toto definuje kabeláž LCD k DIGITÁLNÍM pinům konst int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
// Nastavení digitálního LCD Constrast int cs = 9; // pin 9 pro kontrast PWM const int kontrast = 100; // výchozí kontrast
// počáteční zobrazení času je 12:59:45 PM int h = 12; int m = 59; int s = 45; int vlajka = 1; //ODPOLEDNE
// Tlačítka pro nastavení času int button1; int tlačítko2;
// Definice pinů pro tlačítka pro nastavení času int hs = 0; // pin 0 pro nastavení hodin int ms = 1; // pin 1 pro nastavení minut
// Prodleva podsvícení const int Time_light = 150; int bl_TO = Time_light; // Prodleva podsvícení int bl = 10; // Pin podsvícení const const podsvícení = 120; // ne více než 7mA !!!
// Pro přesné čtení času použijte Arduino Real Time Clock a ne pouze delay () static uint32_t last_time, now = 0; // RTC
neplatné nastavení () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // vyhněte se externím Pullup rezistorům pro Button 1 pinMode (ms, INPUT_PULLUP); // a Button 2 analogWrite (cs, kontrast); // Upravte kontrast VO analogWrite (bl, podsvícení); // Turn na podsvícení nyní = millis (); // číst počáteční hodnotu RTC}
void loop () {lcd.begin (16, 2); // každou sekundu // Aktualizace LCD displeje // Tisk ČAS za hodinu, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print („Čas“); if (h <10) lcd.print ("0"); // vždy 2 číslice lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);
if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // pro řádek 2 lcd.print ("přesné hodiny");
// vylepšená náhrada zpoždění (1000) // Mnohem lepší přesnost, už žádná závislost na době provedení smyčky
for (int i = 0; i <5; i ++) // make 5 time 200ms loop, for faster Button response {
while ((now-last_time) <200) // delay200ms {now = millis (); } // vnitřní 200ms smyčka last_time = nyní; // připravte se na další smyčku
// čtení tlačítka pro nastavení tlačítek1 = digitalRead (hs); // Tlačítko pro čtení tlačítek2 = digitalRead (ms);
// Prodleva podsvícení bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Podsvícení vypnuto bl_TO ++; } // Stisknutím libovolného aktivujete podsvícení if (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, podsvícení); // počkejte, až se tlačítko uvolní, zatímco ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms); }} else // Zpracování tlačítka 1 nebo tlačítka 2 při stisknutí při zapnutém podsvícení {if (button1 == 0) {h = h+1; bl_TO = Time_light; analogWrite (bl, podsvícení); }
if (button2 == 0) {s = 0; m = m+1; bl_TO = Time_light; analogWrite (bl, podsvícení); }
/* ---- spravovat přetečení sekund, minut, hodin dopoledne/odpoledne ----*/if (s == 60) {s = 0; m = m+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; vlajka = vlajka+1; if (flag == 2) flag = 0; }
if ((button1 == 0) | (button2 == 0)) // Aktualizace displeje, pokud je stisknuto tlačítko pro nastavení času {// Aktualizace LCD displeje // Tisk ČASU za hodinu, min, s + AM/PM lcd.setCursor (0, 0); lcd.print („Čas“); if (h <10) lcd.print ("0"); // vždy 2 číslice lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);
if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // pro řádek 2 lcd.print ("přesné hodiny"); }
} // konec, pokud jinak} // konec pro
// vnější smyčka 1000 ms
s = s+1; // přírůstek sek. počítání // ---- spravovat přetečení sekund, minut, hodin/hodin ---- if (s == 60) {s = 0; m = m+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; vlajka = vlajka+1; if (flag == 2) flag = 0; }
// Konec smyčky}
Krok 3: Schéma (toto opravdu není krok)
Pokud někdo, kdo to čte, je technický blbeček, je zde také schéma, na které se můžete podívat a zbláznit se.
Užívejte si a bavte se a hlavně zůstaňte svěží.
Doporučuje:
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesné: 3 kroky
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesné: ************************************************* ******************************** STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP Toto je zastaralý projekt. nová verze displeje 2x16 LCD je k dispozici zde: https: //www.instructables.com/id
Přesné počítadlo odběratelů YouTube: 4 kroky
Přesné počitadlo odběratelů YouTube: Začal jsem se na tento projekt připravovat zhruba před měsícem, ale poté mě YouTube vykolejilo, když oznámili, že již nebudou poskytovat skutečný počet odběratelů, ale nejbližší zaokrouhlené číslo. V tuto chvíli to opravdu není problém
Nastavení DS3231 RTC (hodiny v reálném čase) přesně, rychle a automatizovaně pomocí Javy (+-1 s): 3 kroky
Přesné, rychlé a automatické nastavení DS3231 RTC (hodiny v reálném čase) pomocí Javy (+-1 s): Tento návod vám ukáže, jak nastavit čas na hodinách reálného času DS3231 pomocí Arduina a malé Java aplikace, která používá sériové připojení Arduina. Základní logika tohoto programu: 1. Arduino odesílá sériový požadavek
DIY SNÍMAČ VLHKOSTI PŮDY LEVNĚ PŘESNĚ!: 4 kroky
DIY SNÍMAČ VLHKOSTI PŮDY LEVNĚ PŘESNĚ!: Jsem milovník rostlin a technický vedoucí. Nedávno jsem se rozhodl pěstovat nějaké rostliny na svém balkoně. Rozhodl jsem se automatizovat zavlažovací systém, protože je mohu zapomenout zalévat. Nechtěl jsem riskovat s mými krásnými květinami. tak jsem se rozhodl získat půdu
Přesné peristaltické čerpadlo: 13 kroků
Přesná peristaltická pumpa: Jsme studentský tým z různých oborů RWTH Aachen University a vytvořili jsme tento projekt v rámci soutěže iGEM 2017. Po veškeré práci, která byla věnována naší pumpě, bychom se s vámi rádi podělili o naše výsledky ! Stavíme