Სარჩევი:
ვიდეო: ზუსტი საათი: 3 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
ჩვენ ყველას გვჭირდება საათი, ასე რომ, რატომ არ უნდა გახადოთ თქვენი საკუთარი ხელით ამ სასწავლო ინსტრუქციაში მე ვაჩვენებ, თუ როგორ უნდა გააკეთოთ ზუსტი საათი მას შემდეგ რაც დააყენებთ ავტომატურად თვალყურს ადევნებს მიმდინარე დროს ყველაფრის ფონზე. მიუხედავად იმისა, რომ საჭიროა მხოლოდ ძალიან ცოტა მარაგი და ნულოვანი შედუღება.
მარაგები
პირველი, თქვენ დაგჭირდებათ 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 აქ არის ასევე სქემატური შეგიძლიათ შეხედოთ მას გიჟები.
ისიამოვნეთ და გაერთეთ და ყველაზე მეტად იყავით სუფთა.
გირჩევთ:
როგორ გააკეთოთ ანალოგური საათი და ციფრული საათი Led Strip– ით Arduino– ს გამოყენებით: 3 ნაბიჯი
როგორ გავაკეთოთ ანალოგური საათი და ციფრული საათი Led Strip– ით Arduino– ს გამოყენებით: დღეს ჩვენ გავაკეთებთ ანალოგიურ საათს & ციფრული საათი Led Strip– ით და MAX7219 Dot მოდულით Arduino– ით. ის შეასწორებს დროს ადგილობრივ დროის ზონაში. ანალოგურ საათს შეუძლია გამოიყენოს უფრო გრძელი LED ზოლები, ასე რომ ის შეიძლება კედელზე ჩამოკიდდეს და გახდეს ხელოვნება
Arduino ზუსტი და ზუსტი ვოლტმეტრი (0-90V DC): 3 ნაბიჯი
Arduino ზუსტი და ზუსტი ვოლტმეტრი (0-90V DC): ამ ინსტრუქციულად, მე ავაშენე ვოლტმეტრი, რომ გავზომოთ მაღალი ძაბვები DC (0-90v) შედარებით სიზუსტით და სიზუსტით არდუინო ნანოს გამოყენებით. სატესტო გაზომვები, რომლებიც მე ავიღე, საკმაოდ ზუსტი იყო, უმეტესად ფაქტობრივი ძაბვის 0.3 ვ ფარგლებში
საპენსიო საათი / დათვლა / Dn საათი: 4 ნაბიჯი (სურათებით)
საპენსიო საათი / დათვლა / Dn საათი: უჯრაში მქონდა რამოდენიმე ამ 8x8 LED dot-matrix ჩვენება და ვფიქრობდი რა გამეკეთებინა მათთან. სხვა ინსტრუქციებით შთაგონებული, მე მივიღე იდეა ავაშენო დათვლის/ზევით ჩვენება მომავალ თარიღამდე/დროზე დასათვლელად და თუ მიზნობრივი დროა
ESP8266 ქსელის საათი ყოველგვარი RTC - Nodemcu NTP საათი არა RTC - პროექტი ინტერნეტ საათზე: 4 ნაბიჯი
ESP8266 ქსელის საათი ყოველგვარი RTC | Nodemcu NTP საათი არ არის RTC | ინტერნეტის საათის პროექტი: პროექტში იქნება საათის პროექტი RTC– ის გარეშე, ის მიიღებს დროს ინტერნეტიდან wifi– ს გამოყენებით და ის გამოჩნდება st7735 ეკრანზე
C51 4 ბიტიანი ელექტრონული საათი - ხის საათი: 15 ნაბიჯი (სურათებით)
C51 4 ბიტიანი ელექტრონული საათი - ხის საათი: ამ შაბათ -კვირას მქონდა თავისუფალი დრო, ასე რომ წინ წავიდა და ავაწყვე 2.40 აშშ დოლარი, 4 ბიტიანი DIY ელექტრონული ციფრული საათი, რომელიც ვიყიდე AliExpress– ისგან ცოტა ხნის წინ