Satura rādītājs:

Precīzs pulkstenis: 3 soļi
Precīzs pulkstenis: 3 soļi

Video: Precīzs pulkstenis: 3 soļi

Video: Precīzs pulkstenis: 3 soļi
Video: КОНЕЦ МУЧЕНИЯМ. Трава больше не проблема! 2024, Novembris
Anonim
Precīzs pulkstenis
Precīzs pulkstenis

Mums visiem ir vajadzīgi pulksteņi, tāpēc kāpēc neizdarīt savu šajā pamācošajā? Lai gan arī vajag tikai ļoti maz krājumu un nulles lodēšanas.

Piegādes

Pirmkārt, jums būs nepieciešams Arduino, bet jebkurš Arduino darbosies

Tālāk jums būs nepieciešams vispārēju džemperu vadu sortiments.

2 12 mm Sparkfun spiedpogas slēdži

Tradicionāls maizes dēlis

un LCD 1602 16 kontaktu displejs

1. solis: Elektroinstalācija

Elektroinstalācija
Elektroinstalācija

Lai šis pulkstenis darbotos, jums tas ir jāpievieno ļoti specifiskā veidā, pretējā gadījumā ekrānā tiks parādīts virkne nejaušu skaitļu, nevis laiks.

2. darbība: kods

Tā kā mēs neizmantojam RTC, kods būs nedaudz garš, bet, par laimi, esmu izdarījis visu smago darbu jūsu vietā un sniedzis to šeit.

Vienkārši kopējiet un ielīmējiet to Arduino IDE vai tīmekļa redaktorā.

#include "LiquidCrystal.h"

// Tas nosaka LCD vadu savienošanu ar DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal LCD (rs, en, d4, d5, d6, d7);

// Digitālā LCD kontrasta iestatījums int cs = 9; // pin 9 kontrastam PWM const int kontrasts = 100; // noklusējuma kontrasts

// sākotnējais laika displejs ir 12:59:45 PM int h = 12; int m = 59; int s = 45; int karogs = 1; // PM

// Laika iestatīšanas pogas int poga1; int poga2;

// Piespraudes definīcija laika iestatīšanas pogām int hs = 0; // pin 0 for Stundu iestatījums int ms = 1; // pin 1 for Minutes Setting

// Backlight Time Out const int Time_light = 150; int bl_TO = Laika apgaismojums; // Fona apgaismojuma taimauts int bl = 10; // Backlight pin const int backlight = 120; // ne vairāk kā 7mA !!!

// Lai iegūtu precīzu laika nolasīšanu, izmantojiet Arduino reālā laika pulksteni un ne tikai aizkavējiet () static uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // izvairieties no ārējiem pievilkšanas rezistoriem 1. pogai pinMode (ms, INPUT_PULLUP); // un 2. poga analogWrite (cs, kontrasts); // Pielāgojiet kontrastu VO analogWrite (bl, fona apgaismojums); // Pagrieziet uz Apgaismojums tagad = milis (); // lasīt RTC sākotnējo vērtību}

void loop () {lcd.begin (16, 2); // katru sekundi // Atjaunināt LCD displeju // Drukāt TIME in Hour, Min, Sec + AM/PM lcd.setCursor (0, 0); lcd.print ("Laiks"); if (h <10) lcd.print ("0"); // vienmēr 2 cipari lcd.print (h); lcd.print (":"); ja (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); ja (s <10) lcd.print ("0"); lcd.print (s);

ja (karogs == 0) lcd.print ("AM"); ja (karogs == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2. rindai lcd.print ("Precīzs pulkstenis");

// uzlabota aiztures aizvietošana (1000) // Daudz labāka precizitāte, vairs nav atkarīga no cilpas izpildes laika

for (int i = 0; i <5; i ++) // izveidojiet 5 reizes 200 ms cilpu, lai ātrāk reaģētu poga {

while ((tagad-pēdējais_laiks) <200) // delay200ms {now = millis (); } // iekšējā 200 ms cilpa last_time = now; // sagatavoties nākamajai cilpai

// poga Iestatīšanas pogu lasīšana1 = digitalRead (hs); // Pogas Read22 = digitalRead (ms);

// Fona apgaismojuma noildze bl_TO--; ja (bl_TO == 0) {analogWrite (bl, 0); // Fona apgaismojums OFF bl_TO ++; } // Lai aktivizētu fona apgaismojumu, nospiediet jebkuru, ja ((((poga1 == 0) | (poga2 == 0)) & (bl_TO == 1)) {bl_TO = Laika gaisma; analogWrite (bl, fona apgaismojums); // pagaidiet, līdz poga tiek atbrīvota, kamēr ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Pogas Read2 poga2 = digitalRead (ms); }} else // Apstrādes poga 1 vai poga 2, kad tiek nospiests, kamēr ir ieslēgts apgaismojums {if (button1 == 0) {h = h+1; bl_TO = Laika_gaisma; analogWrite (bl, fona apgaismojums); }

ja (poga2 == 0) {s = 0; m = m+1; bl_TO = Laika_gaisma; analogWrite (bl, fona apgaismojums); }

/* ---- pārvaldīt sekundes, minūtes, stundas am/pm pārplūdi ----*/ja (s == 60) {s = 0; m = m+1; } ja (m == 60) {m = 0; h = h+1; } ja (h == 13) {h = 1; karogs = karogs+1; ja (karogs == 2) karogs = 0; }

ja ((poga1 == 0) | (poga2 == 0)) // Atjaunināt displeju, ja tiek nospiesta laika iestatīšanas poga {// Atjaunināt LCD displeju // Drukāt LAIKU stundās, minūtēs, sekundēs + AM/PM lcd.setCursor (0, 0); lcd.print ("Laiks"); if (h <10) lcd.print ("0"); // vienmēr 2 cipari lcd.print (h); lcd.print (":"); ja (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); ja (s <10) lcd.print ("0"); lcd.print (s);

ja (karogs == 0) lcd.print ("AM"); ja (karogs == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2. rindai lcd.print ("Precīzs pulkstenis"); }

} // beigas, ja citādi} // beigas par

// ārējā 1000ms cilpa

s = s+1; // pieaugums sek. skaitīšana // ---- pārvaldīt sekundes, minūtes, stundas am/pm pārplūdi ---- if (s == 60) {s = 0; m = m+1; } ja (m == 60) {m = 0; h = h+1; } ja (h == 13) {h = 1; karogs = karogs+1; ja (karogs == 2) karogs = 0; }

// Cikla beigas}

3. darbība: shematisks (tas nav īsti solis)

Shēma (tas nav īsti solis)
Shēma (tas nav īsti solis)

Ja kāds, kas lasa šo, ir tehnoloģiju nerd, šeit ir arī shematisks raksturs, un jūs varat paskatīties, ka tas kļūst traks.

Izbaudiet un izklaidējieties, un galvenais - esiet svaigs.

Ieteicams: