Բովանդակություն:

Preշգրիտ ժամացույց `3 քայլ
Preշգրիտ ժամացույց `3 քայլ

Video: Preշգրիտ ժամացույց `3 քայլ

Video: Preշգրիտ ժամացույց `3 քայլ
Video: Угрюм-река (1969) (1 серия) фильм 2024, Նոյեմբեր
Anonim
Preշգրիտ ժամացույց
Preշգրիտ ժամացույց

Մեզ բոլորիս անհրաժեշտ են ժամացույցներ, ուստի ինչու՞ ձեր սեփականը չդարձնել այս ուսանելի ծրագրում: Ես ձեզ ցույց կտամ, թե ինչպես պատրաստել ճշգրիտ ժամացույց, երբ դուք սահմանեք, ինքնաբերաբար հետևելու է ընթացիկ ժամանակին ամեն ինչի ֆոնին: Մինչդեռ անհրաժեշտ է միայն շատ քիչ պաշարներ և զրոյական զոդումներ:

Պարագաներ

Նախ, ձեզ հարկավոր է Arduino, բայց ցանկացած Arduino կաշխատի

Հաջորդը, ձեզ հարկավոր է ընդհանուր jumper լարերի տեսականի:

2 12 մմ Sparkfun սեղմիչ կոճակ

Ավանդական Breadboard

և LCD 1602 16 փին էկրան

Քայլ 1: Լարերի տեղադրում

Հաղորդալարեր
Հաղորդալարեր

Որպեսզի այս ժամացույցը աշխատի, դուք պետք է այն միացնեք շատ կոնկրետ եղանակով, այլապես էկրանին ավելի շատ պատահական թվեր կստանաք, քան ժամանակը:

Քայլ 2: Կոդ

Քանի որ մենք չենք օգտագործում RTC, ապա կոդը մի փոքր երկար կլինի, բայց, բարեբախտաբար, ես ամբողջ ծանր աշխատանքը կատարել եմ ձեզ համար և այն տրամադրել եմ այստեղ:

Պարզապես պատճենեք և տեղադրեք սա կամ Arduino IDE- ում կամ վեբ խմբագրիչում:

#ներառել «LiquidCrystal.h»

// Սա սահմանում է LCD լարերի միացում DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal LCD (rs, en, d4, d5, d6, d7);

// Թվային LCD կոնստրակտ պարամետր int cs = 9; // PIN 9 հակադրության համար PWM const int Contrast = 100; // կանխադրված հակադրություն

// սկզբնական displayամանակի ցուցադրումը `12:59:45 PM int h = 12; int m = 59; int s = 45; int դրոշ = 1; // PM

// Time Set Buttons int button1; int կոճակ 2;

// insամանակի սահմանման կոճակների համար կապում սահմանումներ int hs = 0; // pin 0 Hամերի կարգավորման համար int ms = 1; // pin 1 րոպեների կարգավորման համար

// Backlight Time Out out const int Time_light = 150; int bl_TO = Time_light; // Backlight Time-Out int bl = 10; // Հետին լուսավորության pin const int լուսային լուսավորություն = 120; // ոչ ավելի, քան 7 մԱ !!!

// Timeամանակի ճշգրիտ ընթերցման համար օգտագործեք Arduino իրական ժամանակի ժամացույց և ոչ միայն հետաձգեք () static uint32_t վերջին_ժամանակը, այժմ = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // խուսափել արտաքին Pullup resistors կոճակի համար 1 pinMode (ms, INPUT_PULLUP); // և Button 2 analogWrite (cs, contrast); // Adjust Contrast VO analogWrite (bl, backlight); // Turn այժմ Backlight- ում = millis (); // կարդալ RTC- ի սկզբնական արժեքը}

void loop () {lcd.begin (16, 2); // ամեն վայրկյան // Թարմացրեք LCD էկրանը // Տպեք IMEԱՄԱՆԸ ժամում, րոպե, վրկ + AM/PM lcd.setCursor (0, 0); lcd.print («"ամանակ»); եթե (h <10) lcd.print ("0"); // միշտ 2 նիշ lcd.print (h); lcd.print (":"); եթե (մ <10) lcd.print ("0"); lcd. տպագիր (մ); lcd.print (":"); if (s <10) lcd.print ("0"); lcd. տպագիր (ներ);

եթե (դրոշ == 0) lcd.print ("AM"); եթե (դրոշ == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // տող 2 -ի համար lcd.print («clockշգրիտ ժամացույց»);

// բարելավված հետաձգման փոխարինում (1000) // Շատ ավելի լավ ճշգրտություն, այլևս կախված չէ օղակի կատարման ժամանակից

for (int i = 0; i <5; i ++) // կատարեք 5 անգամ 200ms հանգույց, ավելի արագ կոճակի պատասխանի համար {

while ((now-last_time) <200) // delay200ms {now = millis (); } // ներքին 200ms հանգույց last_time = այժմ; // պատրաստվել հաջորդ հանգույցին

// կարդալ Setting Buttons button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms);

// Հետին լուսավորության ժամանակը դուրս bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Backlight OFF bl_TO ++; } // Կտտացրեք որևէ մեկին ՝ Backlight- ը ակտիվացնելու համար, եթե ((((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, backlight); // սպասեք, մինչև կոճակը բացվի մինչ ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms); }} else // Գործընթացի կոճակ 1 կամ կոճակ 2, երբ հարվածում է Backlight- ը {if (button1 == 0) {h = h+1; bl_TO = _ամանակի լույս; analogWrite (bl, backlight); }

if (button2 == 0) {s = 0; մ = մ+1; bl_TO = _ամանակի լույս; analogWrite (bl, backlight); }

/* ---- կառավարել վայրկյաններ, րոպեներ, առավոտյան/ժամերի արտահոսք ----*/եթե (s == 60) {s = 0; մ = մ+1; } եթե (m == 60) {m = 0; h = h+1; } եթե (h == 13) {h = 1; դրոշ = դրոշ+1; եթե (դրոշ == 2) դրոշ = 0; }

if ((button1 == 0) | (button2 == 0)) // Թարմացնել ցուցադրումը, եթե սեղմել է ժամանակը սահմանված կոճակը {// Update LCD Display // Print TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print («"ամանակ»); եթե (h <10) lcd.print ("0"); // միշտ 2 նիշ lcd.print (h); lcd.print (":"); եթե (մ <10) lcd.print ("0"); lcd. տպագիր (մ); lcd.print (":"); if (s <10) lcd.print ("0"); lcd. տպագիր (ներ);

եթե (դրոշ == 0) lcd.print ("AM"); եթե (դրոշ == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // տող 2 -ի համար lcd.print («clockշգրիտ ժամացույց»); }

} // ավարտել, եթե այլ բան է} // ավարտել համար

// արտաքին 1000ms հանգույց

s = s+1; // ավելացում վրկ. հաշվում // ---- կառավարել վայրկյաններ, րոպեներ, ժամեր առավոտյան/երեկոյան արտահոսք ---- եթե (s == 60) {s = 0; մ = մ+1; } եթե (m == 60) {m = 0; h = h+1; } եթե (h == 13) {h = 1; դրոշ = դրոշ+1; եթե (դրոշ == 2) դրոշ = 0; }

// Օղակի ավարտը}

Քայլ 3: Սխեմատիկ (սա իրականում քայլ չէ)

Սխեմատիկ (սա իսկապես քայլ չէ)
Սխեմատիկ (սա իսկապես քայլ չէ)

Եթե որևէ մեկը, ով կարդում է սա, տեխնիկական խելագար է, այստեղ նաև սխեմատիկ է, կարող եք դրան խելագարվել:

Վայելեք և զվարճացեք և ամենից շատ թարմ մնացեք:

Խորհուրդ ենք տալիս: