İçindekiler:

Hassas Saat: 3 Adım
Hassas Saat: 3 Adım

Video: Hassas Saat: 3 Adım

Video: Hassas Saat: 3 Adım
Video: Vefasız hiç düşündün mü?-speed up (tiktok ver.) 2024, Haziran
Anonim
Hassas Saat
Hassas Saat

Hepimizin saatlere ihtiyacı var, bu yüzden neden bu talimatta kendinizinkini yapmıyorsunuz, size bir Hassas saatin nasıl yapıldığını göstereceğim, bir kez ayarladığınızda, her şeyin arka planında şimdiki zamanı otomatik olarak takip edecektir. Ayrıca sadece çok az malzemeye ve sıfır lehimlemeye ihtiyaç duyarken.

Gereçler

İlk önce bir Arduino'ya ihtiyacınız olacak, ancak herhangi bir Arduino çalışacak

Ardından, bir dizi genel atlama teline ihtiyacınız olacak.

2 adet 12mm Sparkfun Buton Anahtarı

Geleneksel bir Breadboard

ve bir LCD 1602 16 pinli ekran

Adım 1: Kablolama

kablolama
kablolama

Bu saatin çalışması için, bunu çok özel bir şekilde bağlamanız gerekir, yoksa ekranda zamandan ziyade bir sürü rastgele sayı görürsünüz.

2. Adım: Kod

RTC kullanmadığımız için kod biraz uzun olacak ama neyse ki tüm zor işleri sizin için yaptım ve burada sağladım.

Bunu Arduino IDE'ye veya web Editörüne kopyalayıp yapıştırmanız yeterlidir.

#include "LiquidCrystal.h"

// Bu, DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7'ye LCD kablolamasını tanımlar; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Dijital LCD Kontrast ayarı int cs=9;// kontrast için pin 9 PWM const int kontrast = 100;// varsayılan kontrast

// ilk Zaman gösterimi 12:59:45 PM int h=12; int m=59; int s=45; int bayrak=1; //ÖĞLEDEN SONRA

// Zaman Ayar Butonları int button1; int düğme2;

// Zaman Ayar Butonları için pin tanımı int hs=0;// Saat Ayarı için pin 0 int ms=1;// Dakika Ayarı için pin 1

// Arka Işık Zaman Aşımı const int Zaman_ışık=150; int bl_TO=Time_light;// Arka Işık Zaman Aşımı int bl=10; // Arka ışık pimi const int arka ışık=120; // 7mA'dan fazla değil !!!

// Doğru Zaman okuması için Arduino Gerçek Zamanlı Saati kullanın ve sadece delay() static uint32_t last_time, şimdi = 0; // RTC

geçersiz kurulum() { lcd.begin(16, 2); pinMode(hs, INPUT_PULLUP);// Düğme 1 pinMode(ms, INPUT_PULLUP);// ve Düğme 2 analogWrite(cs, kontrast);// Kontrastı Ayarla VO analogWrite(bl, arka ışık);// Dönüş Arka Işıkta şimdi=millis(); // RTC başlangıç değerini oku }

void loop() { lcd.begin(16, 2);// her saniye // LCD Ekranı Güncelle // ZAMAN'ı Saat, Min, Saniye olarak yazdır + AM/PM lcd.setCursor(0, 0); lcd.print("Zaman"); if(h<10)lcd.print("0");// her zaman 2 haneli lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.baskı(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.baskı(lar);

if(bayrak==0) lcd.print("ÖÖ"); if(bayrak==1) lcd.print(" PM"); lcd.setCursor(0, 1);// 2. Satır için lcd.print("Hassas saat");

// geliştirilmiş gecikme değişimi(1000) // Çok daha iyi doğruluk, artık döngü yürütme süresine bağlı değil

for (int i=0;i<5;i++)// daha hızlı Düğme yanıtı için 5 kez 200ms döngü yapın {

while ((şimdi-son_zaman)<200) //delay200ms { şimdi=millis(); } // 200ms iç döngü last_time=şimdi; // sonraki döngüye hazırlan

// Ayar Düğmelerini oku button1=digitalRead(hs);// Düğmeleri Oku button2=digitalRead(ms);

//Arka ışık zaman aşımı bl_TO--; if(bl_TO==0) { analogWrite(bl, 0);// Arka Işık KAPALI bl_TO++; } // Arka Işığı etkinleştirmek için herhangi birine basın if(((button1==0)|(button2==0)) & (bl_TO==1)) { bl_TO=Time_light; analogWrite(bl, arka ışık); // Düğme bırakılana kadar bekleyin while ((button1==0)|(button2==0)) { button1=digitalRead(hs);// Düğmeleri Oku button2=digitalRead(ms); } } else // Arka Işık açıkken basıldığında Düğme 1'i veya Düğme 2'yi İşleyin { if(button1==0){ h=h+1; bl_TO=Zaman_ışık; analogWrite(bl, arka ışık); }

if(button2==0){ s=0; m=m+1; bl_TO=Zaman_ışık; analogWrite(bl, arka ışık); }

/* ---- saniye, dakika, saat am/pm taşmasını yönet ----*/ if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==13) { h=1; bayrak=bayrak+1; if(bayrak==2)bayrak=0; }

if((button1==0)|(button2==0))// Zaman ayar düğmesine basıldığında ekranı güncelle { // LCD Ekranı Güncelle // ZAMAN'ı Saat, Min, Saniye olarak yazdır + AM/PM lcd.setCursor(0, 0); lcd.print("Zaman"); if(h<10)lcd.print("0");// her zaman 2 haneli lcd.print(h); lcd.print(":"); if(m<10)lcd.print("0"); lcd.baskı(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.baskı(lar);

if(bayrak==0) lcd.print("ÖÖ"); if(bayrak==1) lcd.print(" PM"); lcd.setCursor(0, 1);// 2. Satır için lcd.print("Hassas saat"); }

} // yoksa sona erdir }// için son

// dış 1000ms döngü

s=s+1; //saniyeyi artır. sayma // ---- saniyeleri, dakikaları, saatleri yönet am/pm taşması ---- if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==13) { h=1; bayrak=bayrak+1; if(bayrak==2)bayrak=0; }

// Döngü sonu }

Adım 3: Şematik (Bu Gerçekten Bir Adım Değildir)

Şematik (Bu Gerçekten Bir Adım Değildir)
Şematik (Bu Gerçekten Bir Adım Değildir)

Bunu okuyan biri bir teknik adamsa, burada da bir şematik, çıldırmış gibi bakabilirsiniz.

Keyfini çıkarın ve eğlenin ve hepsinden önemlisi taze kalın.

Önerilen: