Სარჩევი:

ზუსტი საათი: 3 ნაბიჯი
ზუსტი საათი: 3 ნაბიჯი

ვიდეო: ზუსტი საათი: 3 ნაბიჯი

ვიდეო: ზუსტი საათი: 3 ნაბიჯი
ვიდეო: რეკეტირი 2 ქართულად 2024, ნოემბერი
Anonim
ზუსტი საათი
ზუსტი საათი

ჩვენ ყველას გვჭირდება საათი, ასე რომ, რატომ არ უნდა გახადოთ თქვენი საკუთარი ხელით ამ სასწავლო ინსტრუქციაში მე ვაჩვენებ, თუ როგორ უნდა გააკეთოთ ზუსტი საათი მას შემდეგ რაც დააყენებთ ავტომატურად თვალყურს ადევნებს მიმდინარე დროს ყველაფრის ფონზე. მიუხედავად იმისა, რომ საჭიროა მხოლოდ ძალიან ცოტა მარაგი და ნულოვანი შედუღება.

მარაგები

პირველი, თქვენ დაგჭირდებათ Arduino, მაგრამ ნებისმიერი Arduino იმუშავებს

შემდეგი, თქვენ დაგჭირდებათ ზოგადი ჯუმბერის მავთულის ასორტიმენტი.

2 12 მმ Sparkfun Pushbutton გადამრთველი

ტრადიციული პურის დაფა

და 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 კონტრასტი = 100; // ნაგულისხმევი კონტრასტი

// საწყისი დროის ჩვენება არის 12:59:45 PM int h = 12; int m = 59; int s = 45; int დროშა = 1; // PM

// დროის დაყენების ღილაკები int ღილაკი 1; int ღილაკი 2;

// ქინძისთავების განმარტება დროის დაყენების ღილაკებისთვის int hs = 0; // pin 0 საათების დაყენებისთვის int ms = 1; // pin 1 წუთის დაყენებისთვის

// Backlight Time Out const const int Time_light = 150; int bl_TO = დროის_სხივი; // განათების დროის ამოწურვა int bl = 10; // Backlight pin const int backlight = 120; // არა უმეტეს 7 mA !!!

// დროის ზუსტი კითხვისთვის გამოიყენეთ Arduino რეალური დროის საათი და არა მხოლოდ გადადება () სტატიკური uint32_t ბოლო_დრო, ახლა = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // თავიდან აცილება გარე Pullup resistors ღილაკზე 1 pinMode (ms, INPUT_PULLUP); // და ღილაკი 2 analogWrite (cs, განსხვავება); // კონტრასტის მორგება VO analogWrite (bl, backlight); // Turn უკანა განათებაზე ახლა = millis (); // წაიკითხეთ RTC საწყისი მნიშვნელობა}

void loop () {lcd.begin (16, 2); // ყოველ წამს // LCD ეკრანის განახლება // ბეჭდვის დრო საათში, წუთში, წამში + 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. ბეჭდვა (ები);

if (დროშა == 0) lcd.print ("AM"); if (დროშა == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // ხაზისთვის 2 lcd.print ("ზუსტი საათი");

// შეფერხების გაუმჯობესებული ჩანაცვლება (1000) // ბევრად უკეთესი სიზუსტე, აღარ არის დამოკიდებული მარყუჟის შესრულების დროზე

for (int i = 0; i <5; i ++) // გააკეთეთ 5 დრო 200ms მარყუჟი, უფრო სწრაფი ღილაკის რეაგირებისთვის {

while ((now-last_time) <200) // delay200ms {now = millis (); } // შიდა 200ms მარყუჟი last_time = ახლა; // მოემზადეთ შემდეგი მარყუჟისთვის

// წაიკითხეთ ღილაკების დაყენების ღილაკი 1 = digitalRead (hs); // ღილაკების წაკითხვის ღილაკი 2 = digitalRead (ms);

// backlight time out out bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Backlight OFF bl_TO ++; } // დააჭირეთ ნებისმიერს, რომ გააქტიუროთ Backlight if (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = დროის განათება; analogWrite (bl, backlight); // დაელოდეთ სანამ ღილაკი გამოვა სანამ ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // ღილაკების წაკითხვის ღილაკი 2 = digitalRead (ms); }} else // პროცესის ღილაკი 1 ან ღილაკი 2 როდესაც მოხვდა უკანა განათება ჩართულია {if (button1 == 0) {h = h+1; bl_TO = დროის სინათლე; analogWrite (bl, backlight); }

if (button2 == 0) {s = 0; მ = მ+1; bl_TO = დროის სინათლე; analogWrite (bl, backlight); }

/* ---- წამების, წუთების, საათების დილის/საღამოს გადავსება ----*/if (s == 60) {s = 0; მ = მ+1; } if (m == 60) {m = 0; h = h+1; } if (h == 13) {h = 1; დროშა = დროშა+1; თუ (დროშა == 2) დროშა = 0; }

if ((button1 == 0) | (button2 == 0)) // ეკრანის განახლება, თუ დრო მითითებულია ღილაკზე დაჭერით {// LCD ეკრანის განახლება // ბეჭდვა 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. ბეჭდვა (ები);

if (დროშა == 0) lcd.print ("AM"); if (დროშა == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // ხაზისთვის 2 lcd.print ("ზუსტი საათი"); }

} // დასრულდება, თუ სხვაგვარად} // დასრულდება for

// გარე 1000ms მარყუჟი

s = s+1; // ნამატი წმ. დათვლა // ---- წამების, წუთების, საათების დილის/საღამოს გადავსება ---- თუ (s == 60) {s = 0; მ = მ+1; } if (m == 60) {m = 0; h = h+1; } თუ (h == 13) {h = 1; დროშა = დროშა+1; თუ (დროშა == 2) დროშა = 0; }

// მარყუჟის დასასრული}

ნაბიჯი 3: სქემატური (ეს ნამდვილად არ არის ნაბიჯი)

სქემატური (ეს ნამდვილად არ არის ნაბიჯი)
სქემატური (ეს ნამდვილად არ არის ნაბიჯი)

თუ ვინმე კითხულობს ამას არის ტექნიკური nerd აქ არის ასევე სქემატური შეგიძლიათ შეხედოთ მას გიჟები.

ისიამოვნეთ და გაერთეთ და ყველაზე მეტად იყავით სუფთა.

გირჩევთ: