Përmbajtje:

Ora e saktë: 3 hapa
Ora e saktë: 3 hapa

Video: Ora e saktë: 3 hapa

Video: Ora e saktë: 3 hapa
Video: Собаку бросили в лесу с коробкой макарон. История собаки по имени Ринго. 2024, Korrik
Anonim
Orë precize
Orë precize

Ne të gjithë kemi nevojë për orë, kështu që pse të mos bëni tuajin në këtë udhëzues, unë do t'ju tregoj se si të bëni një orë të saktë pasi të keni vendosur, automatikisht do të mbajë gjurmët e kohës aktuale në sfondin e gjithçkaje. Ndërsa gjithashtu ka nevojë vetëm për shumë pak furnizime dhe zero saldime.

Furnizimet

Së pari, do t'ju duhet një Arduino, por çdo Arduino do të funksionojë

Tjetra, do t'ju duhet një shumëllojshmëri e telave të përgjithshëm të kërcyesit.

2 Çelësa 12mm mm Sparkfun Pushbutton

Një Breadboard tradicionale

dhe një ekran LCD 1602 16 pin

Hapi 1: Instalimet elektrike

Instalime elektrike
Instalime elektrike

Në mënyrë që kjo orë të funksionojë, duhet ta lidhni atë në një mënyrë shumë specifike, përndryshe do të merrni një bandë numrash të rastit në ekran sesa në kohë.

Hapi 2: Kodi

Meqenëse ne nuk po përdorim një RTC, kodi do të jetë pak i gjatë, por fatmirësisht unë kam bërë gjithë punën e vështirë për ju dhe e kam siguruar këtu.

Thjesht Kopjoni dhe Ngjiteni këtë ose në Arduino IDE ose në Redaktuesin e uebit.

#përfshi "LiquidCrystal.h"

// Kjo përkufizon instalimet LCD në kontekstin DIGITALpins int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal LCD (rs, en, d4, d5, d6, d7);

// Cilësimi i Kontrastit LCD Dixhital int cs = 9; // pin 9 për kontrast PWM const int kontrast = 100; // Kontrasti i parazgjedhur

// Shfaqja fillestare e Kohës është 12:59:45 pasdite int h = 12; int m = 59; int s = 45; int flamur = 1; // PM

// Butonat e Vendosjes së Kohës butoni int1; butoni int2;

// Përcaktimi i kunjave për Butonat e Vendosjes së Kohës int hs = 0; // pin 0 për Orë Cilësimi int ms = 1; // pin 1 për Vendosjen e Minutave

// Koha e ndriçimit të sfondit konst int Time_light = 150; int bl_TO = Koha-drita; // Drita e prapme Time-Out int bl = 10; // Pin backlight konst int backlight = 120; // jo më shumë se 7mA !!!

// Për leximin e saktë të kohës, përdorni Arduino Ora në kohë reale dhe jo vetëm të vononi () statike uint32_t kohën e fundit, tani = 0; // RTC

void setup () {lcd.filloj (16, 2); pinMode (hs, INPUT_PULLUP); // shmang rezistencat e jashtme tërheqëse për Button 1 pinMode (ms, INPUT_PULLUP); // dhe Button 2 analogWrite (cs, kontrast); // Rregulloni Kontrastin VO analogWrite (bl, backlight); // Turn në Backlight tani = millis (); // lexoni vlerën fillestare të RTC}

lak i pavlefshëm () {lcd.filloj (16, 2); // çdo sekondë // Përditëso ekranin LCD // Koha e printimit në orë, min, sek. + AM/PM lcd.setCursor (0, 0); lcd.print ("Koha"); nëse (h <10) lcd.print ("0"); // gjithmonë 2 shifra lcd.print (h); lcd.print (":"); nëse (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); nëse (s <10) lcd.print ("0"); lcd.print (s);

nëse (flamuri == 0) lcd.print ("AM"); nëse (flamuri == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // për Linjën 2 lcd.print ("Ora e saktë");

// zëvendësimi i përmirësuar i vonesës (1000) // Saktësi shumë më e mirë, jo më e varur nga koha e ekzekutimit të lakut

për (int i = 0; i <5; i ++) // bëni 5 herë lak 200ms, për përgjigje më të shpejtë të butonit {

ndërsa ((tani-koha e fundit) <200) // vonesa200ms {tani = milis (); } // lak i brendshëm 200ms last_time = tani; // përgatituni për lakin tjetër

// lexo butonin Setting Buttons1 = digitalRead (hs); // Button Read Button2 = digitalRead (ms);

// Koha e kalimit të dritës së prapme bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Backlight OFF bl_TO ++; } // Goditi ndonjërën për të aktivizuar Dritën e prapme nëse (((butoni1 == 0) | (butoni2 == 0)) & (bl_TO == 1)) {bl_TO = Koha e ndriçimit; analogWrite (bl, backlight); // prisni derisa Butoni të lëshohet ndërsa ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Butonat e leximit butoni2 = digitalRead (ms); }} else // Butoni i procesit 1 ose Butoni 2 kur goditet ndërsa Backlight ndizet {if (button1 == 0) {h = h+1; bl_TO = Kohëzgjatja; analogWrite (bl, backlight); }

nëse (butoni2 == 0) {s = 0; m = m+1; bl_TO = Kohëzgjatja; analogWrite (bl, backlight); }

/* ---- menaxhoni sekonda, minuta, orë paradite/pasdite tejmbushje ----*/nëse (s == 60) {s = 0; m = m+1; } nëse (m == 60) {m = 0; h = h+1; } nëse (h == 13) {h = 1; flamur = flamur+1; nëse (flamuri == 2) flamuri = 0; }

nëse ((butoni1 == 0) | (butoni2 == 0)) // Përditëso ekranin nëse shtypet butoni i caktuar i kohës {// Përditëso ekranin LCD // Koha e printimit në orë, min, sek + AM/PM lcd.setCursor (0, 0); lcd.print ("Koha"); nëse (h <10) lcd.print ("0"); // gjithmonë 2 shifra lcd.print (h); lcd.print (":"); nëse (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); nëse (s <10) lcd.print ("0"); lcd.print (s);

nëse (flamuri == 0) lcd.print ("AM"); nëse (flamuri == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // për Linjën 2 lcd.print ("Ora e saktë"); }

} // përfundo nëse tjetër} // përfundo për

// lak i jashtëm 1000ms

s = s+1; // rritje sek. duke numëruar // ---- menaxhoni sekonda, minuta, orë paradite/pasdite tejmbushje ---- nëse (s == 60) {s = 0; m = m+1; } nëse (m == 60) {m = 0; h = h+1; } nëse (h == 13) {h = 1; flamur = flamur+1; nëse (flamuri == 2) flamuri = 0; }

// Fundi i lakut}

Hapi 3: Skematik (Ky nuk është me të vërtetë një hap)

Skematike (Ky nuk është me të vërtetë një hap)
Skematike (Ky nuk është me të vërtetë një hap)

Nëse dikush që e lexon këtë është një budalla i teknologjisë këtu është gjithashtu një skematik që mund ta shikoni duke u çmendur.

Shijoni dhe argëtohuni dhe mbi të gjitha qëndroni të freskët.

Recommended: