Mündəricat:

Həssas Saat: 3 addım
Həssas Saat: 3 addım

Video: Həssas Saat: 3 addım

Video: Həssas Saat: 3 addım
Video: START! Walking at Home American Heart Association 3 Mile Walk 2024, Dekabr
Anonim
Həssas Saat
Həssas Saat

Hamımızın saata ehtiyacımız var, buna görə də bu təlimatda öz vaxtınızı yaratmasınız, hər şeyin fonunda cari vaxtı avtomatik olaraq izləyəcək bir dəfə dəqiq bir saat qurmağı sizə göstərəcəyəm. Həm də çox az təchizata və sıfır lehimlərə ehtiyac olsa da.

Təchizat

Birincisi, bir Arduinoya ehtiyacınız olacaq, ancaq hər hansı bir Arduino işləyəcək

Sonra, bir sıra ümumi keçid tellərinə ehtiyacınız olacaq.

2 12 mm Sparkfun düymə açarları

Ənənəvi Breadboard

və LCD 1602 16 pinli ekran

Addım 1: Kabel çəkmə

Kablolama
Kablolama

Bu saatın işləməsi üçün bunu çox xüsusi bir şəkildə bağlamalısınız, yoxsa ekranda vaxtdan çox təsadüfi ədədlər alacaqsınız.

Addım 2: Kod

Bir RTC istifadə etmədiyimiz üçün kod bir az uzun olacaq, amma şükürlər olsun ki, sizin üçün bütün ağır işləri gördüm və burada təqdim etdim.

Bunu Arduino IDE və ya veb redaktoruna kopyalayın və yapışdırın.

#"LiquidCrystal.h" daxil edin

// Bu, DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7 üçün LCD kabelini təyin edir; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Digital LCD Konstrast ayarı int cs = 9; // kontrast üçün pin 9 PWM const int kontrast = 100; // standart kontrast

// ilkin Saat göstəricisi 12:59:45 PM int h = 12; int m = 59; int s = 45; int bayrağı = 1; // PM

// Zaman Ayarlama Düymələri int button1; int düyməsi 2;

// Vaxt Ayarı Düymələri üçün sancaqlar tərifi int hs = 0; // Saat Ayarı üçün 0 pin int ms = 1; // Dəqiqə Ayarı üçün 1 pin.

// Arxa işıq vaxtı bitdi const int Time_light = 150; int bl_TO = Zaman işığı; // Arxa işıq vaxtı bitdi int bl = 10; // Arxa işığı pin const int arxa işıq = 120; // 7mA -dan artıq deyil !!!

// Vaxtın dəqiq oxunması üçün Arduino Real Time Clock istifadə edin və yalnız gecikdirməyin () statik uint32_t last_time, indi = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // Button 1 pinMode (ms, INPUT_PULLUP); // və Button 2 analogWrite (cs, kontrast); // Kontrast VO analogWrite (bl, arxa işıq) üçün xarici çəkmə rezistorlarından çəkinin; indi arxa işıqda = millis (); // RTC ilkin dəyərini oxuyun}

void loop () {lcd.begin (16, 2); // hər saniyə // LCD Ekranı Yeniləyin // Saat, Dəqiqə, Saniyə + AM/Ömərdə ÇALDIRMA vaxtı lcd.setCursor (0, 0); lcd.print ("Zaman"); if (h <10) lcd.print ("0"); // həmişə 2 rəqəm lcd.print (h); lcd.print (":"); əgər (m <10) lcd.print ("0"); lcd çap (m); lcd.print (":"); əgər (s <10) lcd.print ("0"); lcd çap (lar);

əgər (bayraq == 0) lcd.print ("AM"); əgər (bayraq == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // Satır 2 üçün lcd.print ("Həssas saat");

// təkmilləşdirilmiş gecikmənin dəyişdirilməsi (1000) // Daha yaxşı dəqiqlik, döngənin icra müddətindən artıq asılılıq yoxdur

for (int i = 0; i <5; i ++) // 5 dəfə 200 ms döngə yaradın, daha sürətli Düymə cavabı üçün {

while ((now-last_time) <200) // delay200ms {now = millis (); } // daxili 200ms döngəsi last_time = indi; // növbəti döngəyə hazırlaş

// oxumaq Setting Buttons button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms);

// Arxa işıq vaxtı bitdi bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Arka işıq OFF bl_TO ++; } // Arka işığı aktivləşdirmək üçün hər hansı bir vurun (((düymə1 == 0) | (düymə2 == 0)) və (bl_TO == 1)) {bl_TO = Zaman işığı; analogWrite (bl, arxa işıq); // ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Butonları Oxu düyməsi2 = digitalRead (ms); }} başqa // Arxa işıq yandıqda {if (button1 == 0) {h = h+1; bl_TO = Zaman işığı; analogWrite (bl, arxa işıq); }

əgər (düymə2 == 0) {s = 0; m = m+1; bl_TO = Zaman işığı; analogWrite (bl, arxa işıq); }

/* ---- saniyələri, dəqiqələri, saatları idarə et/axşam axını ----*/if (s == 60) {s = 0; m = m+1; } əgər (m == 60) {m = 0; h = h+1; } əgər (h == 13) {h = 1; bayraq = bayraq+1; əgər (bayraq == 2) bayraq = 0; }

if ((button1 == 0) | (button2 == 0)) // Vaxt təyin düyməsinə basıldığı təqdirdə ekranı yeniləyin {// LCD Ekranı Yeniləyin // Saat Çapında, Dəqiqədə, Saniyədə + AM/PMdə Çap Vaxtını yazın lcd.setCursor (0, 0); lcd.print ("Zaman"); if (h <10) lcd.print ("0"); // həmişə 2 rəqəm lcd.print (h); lcd.print (":"); əgər (m <10) lcd.print ("0"); lcd çap (m); lcd.print (":"); əgər (s <10) lcd.print ("0"); lcd çap (lar);

əgər (bayraq == 0) lcd.print ("AM"); əgər (bayraq == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // Satır 2 üçün lcd.print ("Həssas saat"); }

} // başqa halda bitər} // üçün bitər

// xarici 1000ms döngəsi

s = s+1; // artım saniyəsi saymaq // ---- saniyələri, dəqiqələri, saatları idarə et/axşam axını ---- əgər (s == 60) {s = 0; m = m+1; } əgər (m == 60) {m = 0; h = h+1; } əgər (h == 13) {h = 1; bayraq = bayraq+1; əgər (bayraq == 2) bayraq = 0; }

// Döngənin sonu}

Addım 3: Şematik (Bu həqiqətən bir addım deyil)

Şematik (Bu həqiqətən bir addım deyil)
Şematik (Bu həqiqətən bir addım deyil)

Bunu oxuyan kimsə burada bir texnologiyadırsa, baxa biləcəyiniz bir sxemdir.

Zövq alın və əylənin və ən çox təzə qalın.

Tövsiyə: