İçindekiler:
Video: Hassas Saat: 3 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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
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)
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:
Arduino Nano ile Waveshare E-ink Ekran Hassas Voltmetre (0-90v DC): 3 Adım
Arduino Nano ile Waveshare E-mürekkep Ekran Hassas Voltmetre (0-90v DC) E-Kağıt Ekranında volt DC. Bu talimat, önceki iki projeyi birleştirir: - Ardui
Arduino Hassas ve Doğru Volt Metre (0-90V DC): 3 Adım
Arduino Hassas ve Doğru Volt Ölçer (0-90V DC): Bu talimatta, bir Arduino Nano kullanarak yüksek voltajları DC (0-90v) göreceli hassasiyet ve doğrulukla ölçmek için bir voltmetre oluşturdum. Aldığım test ölçümleri yeterince doğruydu, çoğunlukla ölçülen gerçek voltajın 0,3v'si içinde
Arduino Nano - MPL3115A2 Hassas Altimetre Sensör Eğitimi: 4 Adım
Arduino Nano - MPL3115A2 Hassas Altimetre Sensörü Eğitimi: MPL3115A2, doğru Basınç/İrtifa ve Sıcaklık verileri sağlamak için I2C arayüzüne sahip bir MEMS basınç sensörü kullanır. Sensör çıkışları, yüksek çözünürlüklü 24 bit ADC ile sayısallaştırılır. Dahili işleme, ücretlendirme görevlerini aşağıdakilerden kaldırır
Arduino: Hassas Robot: 6 Adım
Arduino: Hassas Robot: Merhaba.Arduino ve diğer birkaç parça ile nasıl robot yapabileceğinizi göstermek istiyorum. Peki neye ihtiyacımız var? Arduino. Leonardo'm var ama önemli değil H köprüsü TB6612FNG veya diğer Robot Şasi, örneğin DAGU DG012-SV
Raspberry Pi - MPL3115A2 Hassas Altimetre Sensörü Python Eğitimi: 4 Adım
Raspberry Pi - MPL3115A2 Hassas Altimetre Sensörü Python Eğitimi: MPL3115A2, doğru Basınç/İrtifa ve Sıcaklık verileri sağlamak için I2C arayüzüne sahip bir MEMS basınç sensörü kullanır. Sensör çıkışları, yüksek çözünürlüklü 24 bit ADC ile sayısallaştırılır. Dahili işleme, ücretlendirme görevlerini aşağıdakilerden kaldırır