Kazalo:

Natančna ura: 3 koraki
Natančna ura: 3 koraki

Video: Natančna ura: 3 koraki

Video: Natančna ura: 3 koraki
Video: KOSPET TANK S1 Review: Rugged Smartwatch with Elegant Style 2024, Julij
Anonim
Natančna ura
Natančna ura

Vsi potrebujemo ure, zato zakaj si v tem navodilu ne bi naredili svojega, vam bom pokazal, kako narediti natančno uro, ko nastavite, da bo samodejno spremljala trenutni čas v ozadju vsega. Medtem ko potrebujete le zelo malo zalog in nič spajkanja.

Zaloge

Najprej boste potrebovali Arduino, vendar bo kateri koli Arduino deloval

Nato boste potrebovali izbor splošnih mostičnih žic.

2 12mm stikalna stikala Sparkfun

Tradicionalna deska

in 16 -polni zaslon LCD 1602

1. korak: Ožičenje

Ožičenje
Ožičenje

Če želite, da ta ura deluje, morate to povezati na zelo poseben način, sicer boste na zaslonu namesto časa dobili več naključnih števil.

2. korak: Koda

Ker ne uporabljamo RTC, bo koda malce dolga, a na srečo sem za vas opravil vse trdo delo in ga posredoval tukaj.

To preprosto kopirajte in prilepite v Arduino IDE ali spletni urejevalnik.

#include "LiquidCrystal.h"

// To definira ožičenje LCD na DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LCD tekoči kristal (rs, en, d4, d5, d6, d7);

// Nastavitev omejitve digitalnega LCD -ja int cs = 9; // pin 9 za kontrast PWM const int kontrast = 100; // privzeti kontrast

// začetni prikaz časa je 12:59:45 PM int h = 12; int m = 59; int s = 45; int zastavica = 1; // popoldan

// Gumbi za nastavitev časa int button1; gumb int2;

// Definicija nožic za gumbe za nastavitev časa int hs = 0; // pin 0 za nastavitev ur int ms = 1; // pin 1 za nastavitev minut

// Backlight Time Out const int Time_light = 150; int bl_TO = Time_light; // Čas osvetlitve ozadja int bl = 10; // osvetlitev pin const int osvetlitev ozadja = 120; // ne več kot 7mA !!!

// Za natančno odčitavanje časa uporabite uro Arduino v realnem času in ne samo zakasnite () static uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // se izogibajte zunanjim uporovnim uporom za gumb 1 pinMode (ms, INPUT_PULLUP); // in gumb 2 analogWrite (cs, kontrast); // Prilagodite kontrast VO analogWrite (bl, osvetlitev ozadja); // Vklopite vklop osvetlitve ozadja = millis (); // preberite začetno vrednost RTC}

void loop () {lcd.begin (16, 2); // vsako sekundo // Posodobi LCD zaslon // Natisni TIME v Uri, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Čas"); if (h <10) lcd.print ("0"); // vedno 2 števki lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.tisk (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.tisk (i);

if (flag == 0) lcd.print ("AM"); if (zastava == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // za vrstico 2 lcd.print ("Precision clock");

// izboljšana zamenjava zakasnitve (1000) // Veliko boljša natančnost, ni več odvisna od časa izvajanja zanke

for (int i = 0; i <5; i ++) // naredimo 5 -kratno zanko 200 ms, za hitrejši odziv gumba {

while ((now-last_time) <200) // zamuda200ms {zdaj = millis (); } // notranja zanka 200 ms last_time = now; // priprava na naslednjo zanko

// branje gumbov za nastavitev button1 = digitalRead (hs); // Button Button button2 = digitalRead (ms);

// Časovna omejitev osvetlitve ozadja bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // osvetlitev ozadja izklopljena bl_TO ++; } // Pritisnite katero koli, da aktivirate osvetlitev ozadja, če (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, osvetlitev ozadja); // počakajte, da se gumb sprosti while ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Button Button button2 = digitalRead (ms); }} else // Obdelaj gumb 1 ali gumb 2, ko pritisneš, ko je osvetlitev vklopljena {if (button1 == 0) {h = h+1; bl_TO = Časovna svetloba; analogWrite (bl, osvetlitev ozadja); }

če (button2 == 0) {s = 0; m = m+1; bl_TO = Časovna svetloba; analogWrite (bl, osvetlitev ozadja); }

/* ---- upravljanje sekund, minut, ur am/pm overflow ----*/if (s == 60) {s = 0; m = m+1; } če (m == 60) {m = 0; h = h+1; } če (h == 13) {h = 1; zastava = zastava+1; if (zastava == 2) zastava = 0; }

if ((button1 == 0) | (button2 == 0)) // Posodobi prikaz, če pritisnete gumb za nastavitev časa {// Posodobi LCD zaslon // Natisni TIME v uri, minuti, sekundah + AM/PM lcd.setCursor (0, 0); lcd.print ("Čas"); if (h <10) lcd.print ("0"); // vedno 2 števki lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.tisk (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);

if (flag == 0) lcd.print ("AM"); if (zastava == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // za vrstico 2 lcd.print ("Precision clock"); }

} // konec, če je drugače} // konec za

// zunanja zanka 1000ms

s = s+1; // prirast sek. štetje // ---- upravljanje sekund, minut, ur am/pm overflow ---- if (s == 60) {s = 0; m = m+1; } če (m == 60) {m = 0; h = h+1; } če (h == 13) {h = 1; zastava = zastava+1; if (zastava == 2) zastava = 0; }

// konec zanke}

3. korak: Shema (to res ni korak)

Shema (to res ni korak)
Shema (to res ni korak)

Če je kdo, ki to bere, tehnološki norček, je tukaj tudi shema, ki jo lahko pogledate noro.

Uživajte in se zabavajte, predvsem pa ostanite sveži.

Priporočena: