Obsah:

Přesné hodiny: 3 kroky
Přesné hodiny: 3 kroky

Video: Přesné hodiny: 3 kroky

Video: Přesné hodiny: 3 kroky
Video: KDYŽ JSOU VĚCI JINAK, NEŽ BYCHOM SI PŘÁLI... 👉 3 praktické kroky pro sebepéči 2024, Červenec
Anonim
Přesné hodiny
Přesné hodiny

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í

Elektrické vedení
Elektrické vedení

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)

Schéma (toto opravdu není krok)
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: