Mundarija:

Nozik soat: 3 qadam
Nozik soat: 3 qadam

Video: Nozik soat: 3 qadam

Video: Nozik soat: 3 qadam
Video: BU QIZ SINIFDOSHLARI BILAN BIRGA BÕLDI 2024, Noyabr
Anonim
Nozik soat
Nozik soat

Hammamizga soatlar kerak, shuning uchun nima uchun o'z qo'llaringiz bilan o'qitilmasin, men sizga aniq soatni qanday qilishni ko'rsataman, siz o'rnatganingizdan so'ng, hamma narsa fonida joriy vaqtni avtomatik ravishda kuzatib boradi. Shu bilan birga, faqat ozgina materiallar va nol lehim kerak.

Ta'minotlar

Birinchidan, sizga Arduino kerak bo'ladi, lekin har qanday Arduino ishlaydi

Keyinchalik, sizga umumiy o'tish simlarining assortimenti kerak bo'ladi.

2 12 mm Sparkfun tugmachalari

An'anaviy non paneli

va LCD 1602 16 pinli displey

1 -qadam: simlarni ulash

Ulanish
Ulanish

Bu soat ishlashi uchun siz uni aniq tarzda ulashingiz kerak, aks holda siz vaqtni emas, balki ekranda tasodifiy sonlarni olasiz.

2 -qadam: Kod

Biz RTC -ni ishlatmaganimiz uchun, kod biroz uzoqroq bo'ladi, lekin minnatdorchilik bilan men siz uchun hamma ishni qildim va shu erda berdim.

Buni Arduino IDE yoki veb -muharririga nusxalash va joylashtirish kifoya.

#"LiquidCrystal.h" ni qo'shing

// Bu LCD simlarini DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7 ga aniqlaydi; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Raqamli LCD konstrast sozlamalari int cs = 9; // kontrast uchun 9 -pin PWM const int kontrast = 100; // standart kontrast

// dastlabki Vaqtni ko'rsatish - 12:59:45 PM int h = 12; int m = 59; int s = 45; int bayrog'i = 1; // PM

// Vaqtni sozlash tugmalari int button1; int tugmasi 2;

// Vaqtni sozlash tugmalari uchun pin ta'rifi int hs = 0; // soat sozlamalari uchun 0 pin int ms = 1; // daqiqalar uchun 1 pin.

// Orqa yorug'lik vaqti tugadi const int Time_light = 150; int bl_TO = Vaqt nuri; // Orqa yorug'lik vaqti tugashi int bl = 10; // Orqa nuri pin const int backlight = 120; // 7mA dan oshmaydi !!!

// Vaqtni aniq o'qish uchun Arduino Real Time Clock -dan foydalaning, faqat kechiktirmang () statik uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // 1 -tugma pinMode uchun tashqi tortish qarshiligidan saqlaning (ms, INPUT_PULLUP); // va Button 2 analogWrite (cs, kontrast); // Contrast VO analogWrite -ni sozlash (bl, orqa yorug'lik); // Burilish Orqa nuri hozirda = millis (); // RTC boshlang'ich qiymatini o'qing}

void loop () {lcd.begin (16, 2); // har soniyada // LCD displeyni yangilash // soat, min, sek + AM/PM da chop etish TIME lcd.setCursor (0, 0); lcd.print ("Vaqt"); if (h <10) lcd.print ("0"); // har doim 2 ta raqamli lcd.print (h); lcd.print (":"); agar (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); agar (s <10) lcd.print ("0"); lcd.print (lar);

agar (bayroq == 0) lcd.print ("AM"); agar (bayroq == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 -qator uchun lcd.print ("Aniq soat");

// kechiktirishni almashtirish yaxshilandi (1000) // Juda aniqroq, tsiklni bajarish vaqtiga bog'liq emas

for (int i = 0; i <5; i ++) // 5 marta 200ms tsiklni bajaring, tezroq tugmachali javob berish uchun {

while ((now-last_time) <200) // delay200ms {now = millis (); } // ichki 200ms pastadir last_time = hozir; // keyingi tsiklga tayyorlaning

// o'qish sozlash tugmachalari tugmasi1 = digitalRead (hs); // o'qish tugmalari tugmasi2 = digitalRead (ms);

// Orqa yorug'lik vaqti tugashi bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Orqa nuri o'chirilgan bl_TO ++; } // Orqa nuri yoqish uchun har qanday tugmani bosing, agar (((tugma1 == 0) | (tugma2 == 0)) va (bl_TO == 1)) {bl_TO = Vaqt nuri; analogWrite (bl, orqa yorug'lik); // tugmachani qo'yib yuborilguncha kuting ((tugma1 == 0) | (tugma2 == 0)) {tugma1 = digitalRead (hs); // O'qish tugmalari tugmasi2 = digitalRead (ms); }} else // 1 -tugma yoki 2 -tugma, orqa nuri yonib turganda {if (button1 == 0) {h = h+1; bl_TO = Vaqt nuri; analogWrite (bl, orqa yorug'lik); }

agar (tugma2 == 0) {s = 0; m = m+1; bl_TO = Vaqt nuri; analogWrite (bl, orqa yorug'lik); }

/* ---- soniyalarni, daqiqalarni, soatlarni ertalab/kechani boshqaring ----*/if (s == 60) {s = 0; m = m+1; } agar (m == 60) {m = 0; h = h+1; } agar (h == 13) {h = 1; bayroq = bayroq+1; if (bayroq == 2) bayroq = 0; }

if ((button1 == 0) | (button2 == 0)) // Vaqtni sozlash tugmasi bosilsa, displeyni yangilang {// LCD displeyni yangilang // TIME, soat, min, sek + AM/PMda chop etish lcd.setCursor (0, 0); lcd.print ("Vaqt"); if (h <10) lcd.print ("0"); // har doim 2 ta raqamli lcd.print (h); lcd.print (":"); agar (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); agar (s <10) lcd.print ("0"); lcd.print (lar);

agar (bayroq == 0) lcd.print ("AM"); agar (bayroq == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 -qator uchun lcd.print ("Aniq soat"); }

} // oxiri if if} // end uchun

// tashqi 1000ms pastadir

s = s+1; // soniya ortishi. sanash // ---- soniya, daqiqa, soatni ertalab/kechqurun boshqarish ---- if (s == 60) {s = 0; m = m+1; } agar (m == 60) {m = 0; h = h+1; } agar (h == 13) {h = 1; bayroq = bayroq+1; if (bayroq == 2) bayroq = 0; }

// Loop oxiri}

3 -qadam: sxematik (bu haqiqatan ham qadam emas)

Sxematik (bu haqiqatan ham qadam emas)
Sxematik (bu haqiqatan ham qadam emas)

Agar kimdir buni o'qiyotgan bo'lsa, bu erda texnologik nodonlik ham bor, siz buni aqldan ozgan holda ko'rishingiz mumkin.

Xursand bo'ling va zavqlaning va eng muhimi yangi bo'lib qoling.

Tavsiya: