Turinys:

Tikslus laikrodis: 3 žingsniai
Tikslus laikrodis: 3 žingsniai

Video: Tikslus laikrodis: 3 žingsniai

Video: Tikslus laikrodis: 3 žingsniai
Video: Motyvuojančios įžvalgos siekiantiems tikslo (3 savaitė) 2024, Liepa
Anonim
Tikslus laikrodis
Tikslus laikrodis

Mums visiems reikia laikrodžių, tad kodėl gi nepasigaminus šio pamokomo pamokymo, aš jums parodysiu, kaip padaryti tikslų laikrodį, kai tik nustatysite, automatiškai stebės esamą laiką. Nors taip pat reikia tik labai mažai atsargų ir nulinio litavimo.

Prekės

Pirma, jums reikės „Arduino“, bet bet kuris „Arduino“veiks

Be to, jums reikės įvairių jungiamųjų laidų.

2 12 mm „Sparkfun“mygtukiniai jungikliai

Tradicinė duonos lenta

ir 16 kontaktų LCD 1602 ekranas

1 žingsnis: laidų prijungimas

Laidai
Laidai

Kad šis laikrodis veiktų, turite jį prijungti labai konkrečiu būdu, kitaip ekrane gausite daugybę atsitiktinių skaičių, o ne laiko.

2 žingsnis: kodas

Kadangi mes nenaudojame RTC, kodas bus šiek tiek ilgas, bet, laimei, aš padariau visą sunkų darbą už jus ir pateikiau jį čia.

Tiesiog nukopijuokite ir įklijuokite jį į „Arduino IDE“arba žiniatinklio redaktorių.

#įtraukti „LiquidCrystal.h“

// Tai apibrėžia LCD laidų prijungimą prie DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; „LiquidCrystal“LCD (rs, en, d4, d5, d6, d7);

// Skaitmeninio LCD kontrasto nustatymas int cs = 9; // kaištis 9 kontrastui PWM const int kontrastas = 100; // numatytasis kontrastas

// pradinis laiko rodymas yra 12:59:45 PM int h = 12; int m = 59; int s = 45; int vėliava = 1; // PM

// Laiko nustatymo mygtukai int mygtukas1; int mygtukas2;

// Laiko nustatymo mygtukų smeigtukų apibrėžimas int hs = 0; // kaištis 0 valandų nustatymui int ms = 1; // kaištis 1 minučių nustatymui

// „Backlight Time Out“konst int int Time_light = 150; int bl_TO = Laiko šviesa; // Foninio apšvietimo skirtasis laikas int bl = 10; // Apšvietimo kaištis const int foninis apšvietimas = 120; // ne daugiau kaip 7mA !!!

// Norėdami tiksliai nuskaityti laiką, naudokite „Arduino Real Time Clock“, o ne tik delay () static uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // venkite išorinių „Pullup“rezistorių 1 mygtukui „pinMode“(ms, INPUT_PULLUP); // ir 2 mygtukas „analogWrite“(cs, kontrastas); // Sureguliuokite kontrastą VO analogWrite (bl, foninis apšvietimas); // Pasukite ant foninio apšvietimo dabar = milis (); // skaityti pradinę RTC vertę}

void loop () {lcd.begin (16, 2); // kas sekundę // Atnaujinti LCD ekraną // Spausdinti TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print („Laikas“); if (h <10) lcd.print ("0"); // visada 2 skaitmenys lcd.print (h); lcd.print (":"); jei (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); jei (s <10) lcd.print ("0"); lcd.print (-ai);

if (vėliava == 0) lcd.print ("AM"); if (vėliava == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 eilutei lcd.print ("Tikslus laikrodis");

// patobulintas delsos pakeitimas (1000) // Daug geresnis tikslumas, daugiau nepriklausantis nuo ciklo vykdymo laiko

for (int i = 0; i <5; i ++) // padaryti 5 kartų 200 ms ciklą, kad mygtukas greičiau reaguotų {

while ((dabar-paskutinis laikas) <200) // delay200ms {now = millis (); } // vidinė 200 ms kilpa last_time = now; // pasiruošti kitai ciklui

// mygtukas skaityti nustatymo mygtukus1 = digitalRead (hs); // Mygtuko skaitymas mygtukas2 = digitalRead (ms);

// Apšvietimo laikas baigėsi bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Foninis apšvietimas IŠJUNGTAS bl_TO ++; } // Paspauskite bet kurį, kad suaktyvintumėte foninį apšvietimą, jei ((((mygtukas1 == 0) | (mygtukas2 == 0)) & (bl_TO == 1)) {bl_TO = Laiko šviesa; analogWrite (bl, foninis apšvietimas); // laukti, kol mygtukas bus paleistas, kol ((mygtukas1 == 0) | (mygtukas2 == 0)) {mygtukas1 = skaitmeninis skaitymas (hs); // mygtukas skaityti mygtukas2 = skaitmeninis skaitymas (ms); }} else // Apdoroti 1 arba 2 mygtukus, kai jie paspaudžiami, kai įjungiamas foninis apšvietimas {if (button1 == 0) {h = h+1; bl_TO = Laiko šviesa; analogWrite (bl, foninis apšvietimas); }

jei (mygtukas2 == 0) {s = 0; m = m+1; bl_TO = Laiko šviesa; analogWrite (bl, foninis apšvietimas); }

/* ---- valdyti sekundžių, minučių, valandų am/pm perpildymą ----*/jei (s == 60) {s = 0; m = m+1; } jei (m == 60) {m = 0; h = h+1; } jei (h == 13) {h = 1; vėliava = vėliava+1; jei (vėliava == 2) vėliava = 0; }

if ((mygtukas1 == 0) | (mygtukas2 == 0)) // Atnaujinti ekraną, jei paspaustas laiko nustatymo mygtukas {// Atnaujinti LCD ekraną // Spausdinti TIME valandomis, minutėmis, sek. + AM/PM lcd.setCursor (0, 0); lcd.print („Laikas“); if (h <10) lcd.print ("0"); // visada 2 skaitmenys lcd.print (h); lcd.print (":"); jei (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); jei (s <10) lcd.print ("0"); lcd.print (-ai);

if (vėliava == 0) lcd.print ("AM"); if (vėliava == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 eilutei lcd.print ("Tikslus laikrodis"); }

} // end if else} // end for

// išorinė 1000 ms kilpa

s = s+1; // prieaugis sek. skaičiavimas // ---- valdyti sekundes, minutes, valandas am/pm overflow ---- if (s == 60) {s = 0; m = m+1; } jei (m == 60) {m = 0; h = h+1; } jei (h == 13) {h = 1; vėliava = vėliava+1; jei (vėliava == 2) vėliava = 0; }

// ciklo pabaiga}

3 žingsnis: schema (tai tikrai nėra žingsnis)

Schema (tai tikrai nėra žingsnis)
Schema (tai tikrai nėra žingsnis)

Jei kas nors, skaitantis tai, yra technologijų šaunuolis, čia taip pat yra schema, galite pasižiūrėti, kaip išprotėti.

Mėgaukitės ir linksminkitės, o svarbiausia išlikite švieži.

Rekomenduojamas: