Arduino: membina jam penggera - bagaimana ia berfungsi
Dalam tip praktikal ini, anda akan belajar bagaimana untuk membina jam penggera dengan Arduino. Sangat mudah dengan kod yang betul.
Arduino: membina jam penggera - bagaimana ia berfungsi
Untuk jam penggera Arduino anda memerlukan bekalan kuasa, penerima IR dengan alat kawalan jauh, buzzer, modul masa nyata DS3231, termistor, LCD dan tentu saja papan roti dan Arduino dengan kabel jumper yang sepadan.
- Palamkan dahulu bekalan kuasa dengan cara yang betul di atas pada papan roti dan pastikan ia ditetapkan kepada 5 volt pada kedua-dua sisi.
- Sambungkan penerima inframerah ke bar tambah dan tolak dan pin 3.
- Sambungkan buzzer aktif ke pin 13 dan ke tanah (tolak bar).
- Modul DS3231 juga disambungkan ke bar tambah dan tolak. Juga sambung SDA ke SDA dan SCL ke SCL pada Arduino.
- Sekarang anda perlu termistor, yang juga disambungkan kepada 5 volt dan analog 0 melalui perintang 10 kOhm.
- Akhirnya, anda perlu menyambungkan LCD. K disambungkan ke - dan A hingga +. Pins D4 melalui D7 menyambung ke pin 9 hingga 12 pada Arduino. Sekarang anda perlu menyambung E ke pin 8, RW ke bar minus dan RS ke pin 7. Sambung pin V0 ke potensiometer 10k, yang bersambung dengan 5V dan tanah. Akhir sekali, sambungkan VDD ke 5V dan VSS ke tanah.
Program jam penggera Arduino
Jika anda telah menetapkan semuanya dengan betul, anda boleh memprogram jam penggera Arduino. Kami telah menulis kod contoh kecil untuk ini:
- #include #include #include #include "IRremote.h" int tempPin = 0; Jam DS3231; RTCDateTime dt; LiquidCrystal lcd (7, 8, 9, 10, 11, 12); penerima penerima = 3; IRrecv irrecv (penerima); keputusan decode_results; penggera int; boolean alarm_state = false; Jam rentetan; Destination_time string; Minit rentetan; String current_time; int buzzer = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; dipatahkan; // // KUASA kes 0xFFE21D: pecah; / // FUNC / STOP case 0xFF629D: break; // VOL + kes 0xFF22DD: pecah; // // BAGAIMANA CEPAT kes 0xFF02FD: pecah; // PAUSE kes 0xFFC23D: pecah; / / Kes Pantaskah 0xFFE01F: pecah; / // KES DOWN 0xFFA857: break; / // VOL-case 0xFF906F: break; // UP kes 0xFF9867: pecah; / / Kes EQ 0xFFB04F: pecah; // ST / REPT kes 0xFF6897: penggera = 0; menambah (); dipatahkan; // 0 kes 0xFF30CF: penggera = 1; menambah (); dipatahkan; // 1 kes 0xFF18E7: penggera = 2; menambah (); dipatahkan; // 2 kes 0xFF7A85: penggera = 3; menambah (); dipatahkan; // 3 kes 0xFF10EF: penggera = 4; menambah (); dipatahkan; // 4 kes 0xFF38C7: penggera = 5; menambah (); dipatahkan; // 5 kes 0xFF5AA5: penggera = 6; menambah (); dipatahkan; // 6 kes 0xFF42BD: penggera = 7; menambah (); dipatahkan; // 7 kes 0xFF4AB5: penggera = 8; menambah (); dipatahkan; // 8 kes 0xFF52AD: penggera = 9; menambah (); dipatahkan; // 9 kes 0xFFFFFFFF: pecah; lalai: pecah; } kelewatan (500); } kosong tambah () {destination_time + = String (penggera); } persediaan tidak sah () {pinMode (buzzer, OUTPUT); lcd.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempReading = analogRead (tempPin); double tempK = log (10000.0 * ((1024.0 / tempReading - 1))); tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK); apungan tempC = tempK - 273.15; float tempF = (tempC * 9.0) / 5.0 + 32.0; dt = clock.getDateTime (); lcd.setCursor (0, 0); lcd.print (format clock.date ("dmY H: i: s", dt)); lcd.setCursor (0, 1); lcd.print (String (tempC) + "" + String ((char) 223) + "C"); jika (irrecv.decode (& hasil)) {translateIR (); irrecv.resume (); } hour = clock.dateFormat ("H", dt); minit = clock.dateFormat ("i", dt); current_time = jam + minit; jika (current_time == destination_time && alarm_state == true) {pinMode (buzzer, HIGH); } else {pinMode (buzzer, LOW); } jika (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( ""); } else {lcd.setCursor (10, 1); lcd.print (""); } jika (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } else if (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "JENIS"); } else {lcd.setCursor (11, 1); lcd.print ( "JENIS"); destination_time = ""; } kelewatan (1000); }
- Petua: Salin kod ini ke IDE anda dan pasangkannya seperti yang diperlukan. Anda boleh menemui penjelasan terperinci mengenai garisan kod dalam galeri gambar kami.
Dalam artikel seterusnya, kami akan menerangkan bagaimana anda boleh mengawal modul GSM dengan Arduino.