Arduino: Çalar Saat Yap - Nasıl Çalışır
Bu pratik ipucunda, Arduino ile nasıl çalar saat yapılacağını öğreneceksiniz. Doğru kod ile kolay.
Arduino: Çalar Saat Yap - Nasıl Çalışır
Bir Arduino çalar saat için bir güç kaynağına, uzaktan kumandalı bir IR alıcısına, bir zil sesine, bir DS3231 gerçek zamanlı modülüne, bir termistöre, bir LCD'ye ve elbette bir breadboard'a ve uyumlu jumper kablolarına sahip bir Arduino'ya ihtiyacınız vardır.
- Önce güç kaynağını breadboard'a doğru şekilde takın ve her iki tarafta da 5 volta ayarlandığından emin olun.
- Kızılötesi alıcıyı artı ve eksi çubuklara ve pim 3'e bağlayın.
- Aktif sesli uyarıyı pim 13'e ve yere (eksi çubuk) bağlayın.
- DS3231 modülü ayrıca artı ve eksi çubuklarına da bağlanır. Ayrıca SDA'yı SDA'ya ve SCL'yi Arduino'daki SCL'ye bağlayın.
- Şimdi 10 kOhm direnç üzerinden 5 volta ve analog 0'a bağlı termistöre ihtiyacınız var.
- Son olarak, LCD'yi bağlamanız gerekir. K - 'ye ve A +' ya bağlanmıştır. D4 - D7 pinleri Arduino'daki 9 - 12 pinlerine bağlanır. Şimdi E'yi pin 8'e, RW'yi eksi çubuğa ve RS'yi pin 7'ye bağlamalısınız. V0 pinini 5V ve toprağa bağlı 10k potansiyometreye bağlayın. Son olarak, VDD'yi 5V'ye ve VSS'yi toprağa bağlayın.
Arduino çalar saatini programlayın
Her şeyi doğru şekilde ayarladıysanız, Arduino çalar saatini programlayabilirsiniz. Bunun için küçük bir örnek kod yazdık:
- #include #include #include #include "IRremote.h" int tempPin = 0; DS3231 saati; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); int alıcı = 3; IRrecv irrecv (alıcı); decode_results sonuçları; int alarm; boolean alarm_state = yanlış; Dize saati; Dize hedef_zamanı; Dize dakikası; String current_time; int zil = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // GÜÇ durumu 0xFFE21D: kırılma; // FUNC / STOP durumu 0xFF629D: kırılma; // VOL + kasa 0xFF22DD: sonu; // HIZLI GERİ vaka 0xFF02FD: break; // DURAKLAT DURUMU 0xFFC23D: break; // HIZLI İLERİ kasa 0xFFE01F: ara; // AŞAĞI durum 0xFFA857: sonu; // VOL- durum 0xFF906F: ara; // UP durumu 0xFF9867: sonu; // EQ durumu 0xFFB04F: kırılma; // ST / REPT durumu 0xFF6897: alarm = 0; () Ekleyin; break; // 0 kasa 0xFF30CF: alarm = 1; () Ekleyin; break; // 1 vaka 0xFF18E7: alarm = 2; () Ekleyin; break; // 2 vaka 0xFF7A85: alarm = 3; () Ekleyin; break; // 3 kasa 0xFF10EF: alarm = 4; () Ekleyin; break; // 4 kasa 0xFF38C7: alarm = 5; () Ekleyin; break; // 5 vaka 0xFF5AA5: alarm = 6; () Ekleyin; break; // 6 vaka 0xFF42BD: alarm = 7; () Ekleyin; break; // 7 vaka 0xFF4AB5: alarm = 8; () Ekleyin; break; // 8 kasa 0xFF52AD: alarm = 9; () Ekleyin; break; // 9 vaka 0xFFFFFFFF: sonu; varsayılan: sonu; } gecikme (500); } void add () {destination_time + = Dize (alarm); } void setup () {pinMode (zil, ÇIKIŞ); lcd başlangıç (16, 2); ) (Clock.begin; clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); çift tempK = log (10000.0 * ((1024.0 / tempReading - 1))); tempK = 1 / ((0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK); şamandıra sıcaklığıC = tempK - 273.15; şamandıra sıcaklığıF = (tempC * 9.0) / 5.0 + 32.0; dt = clock.getDateTime (); lcd.setİmleç (0, 0); lcd.print (saat. tarih biçimi ("dmY Y: i: s", dt)); lcd.setİmleç (0, 1); lcd.print (String (tempC) + "" + String ((char) 223) + "C"); if (irrecv.decode (& sonuçlar)) {translateIR (); irrecv.resume (); } hour = clock.dateFormat ("H", dt); dakika = clock.dateFormat ("i", dt); geçerli_saat = saat + dakika; if (current_time == hedef_zamanı && alarm_state == true) {pinMode (sesli uyarı, YÜKSEK); } else {pinMode (sesli uyarı, DÜŞÜK); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } başka {lcd.setCursor (10, 1); lcd.print (""); } if (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } else if (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "tip"); } başka {lcd.setCursor (11, 1); lcd.print ( "tip"); hedef_zamanı = ""; } gecikme (1000); }
- İpucu: Bu kodu IDE'nize kopyalayın ve gerektiği gibi uyarlayın. Kod satırlarının ayrıntılı bir açıklamasını resim galerimizde bulabilirsiniz.
Bir sonraki makalede, bir GSM modülünü Arduino ile nasıl kontrol edebileceğinizi açıklayacağız.