Arduino: สร้างนาฬิกาปลุก - มันทำงานอย่างไร
ในเคล็ดลับที่ใช้งานได้จริงนี้คุณจะได้เรียนรู้วิธีสร้างนาฬิกาปลุกด้วย Arduino ง่ายด้วยรหัสที่ถูกต้อง
Arduino: สร้างนาฬิกาปลุก - มันทำงานอย่างไร
สำหรับนาฬิกาปลุก Arduino คุณต้องใช้แหล่งจ่ายไฟตัวรับสัญญาณ IR พร้อมรีโมทคอนโทรลออดออดิโอโมดูลแบบเรียลไทม์ DS3231 เทอร์มิสเตอร์เทอร์มิสเตอร์แอลซีดีและแน่นอนเขียงหั่นขนมและ Arduino ที่มีสายจัมเปอร์ตรงกัน
- ขั้นแรกให้เสียบแหล่งจ่ายไฟอย่างถูกต้องบนเขียงหั่นขนมและตรวจสอบให้แน่ใจว่าตั้งค่าไว้ที่ 5 โวลต์ทั้งสองด้าน
- เชื่อมต่อตัวรับสัญญาณอินฟราเรดเข้ากับแถบบวกและลบและเพื่อปักหมุด 3
- เชื่อมต่อเสียงสัญญาณเตือนที่ใช้งานเพื่อยึด 13 และกับพื้นดิน (แถบลบ)
- โมดูล DS3231 ยังเชื่อมต่อกับแถบบวกและลบ เชื่อมต่อ SDA กับ SDA และ SCL กับ SCL บน Arduino
- ตอนนี้คุณจำเป็นต้องมีเทอร์มิสเตอร์ซึ่งเชื่อมต่อกับ 5 โวลต์และเป็นอะนาล็อก 0 ผ่านตัวต้านทาน 10 kOhm
- ในที่สุดคุณต้องเชื่อมต่อจอแอลซีดี K เชื่อมต่อกับ - และ A ถึง + พิน D4 ถึง D7 เชื่อมต่อกับพิน 9 ถึง 12 บน Arduino ตอนนี้คุณต้องเชื่อมต่อ E เพื่อ pin 8, RW ไปที่ minus bar และ RS เพื่อ pin 7 เชื่อมต่อขา V0 กับโพเทนชิโอมิเตอร์แบบ 10k ซึ่งเชื่อมต่อกับ 5V และกราวด์ ในที่สุดเชื่อมต่อ VDD กับ 5V และ VSS กับพื้น
ตั้งโปรแกรมนาฬิกาปลุก Arduino
หากคุณตั้งค่าทุกอย่างถูกต้องคุณสามารถตั้งโปรแกรมนาฬิกาปลุก Arduino ได้ เราได้เขียนโค้ดตัวอย่างขนาดเล็กสำหรับสิ่งนี้:
- #include #include #include #include "IRremote.h" int tempPin = 0; นาฬิกา DS3231; RTCDateTime dt; จอแอลซีดี LiquidCrystal (7, 8, 9, 10, 11, 12); รับ int = 3; IRrecv irrecv (ตัวรับสัญญาณ); decode_results ผลลัพธ์ ปลุก int; บูลีน alarm_state = false; ชั่วโมงของสตริง สตริงปลายทาง _time; นาทีของสตริง; สตริงปัจจุบัน _time; int buzzer = 13; เป็นโมฆะ translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; ทำลาย; // POWER case 0xFFE21D: break; // กรณี FUNC / STOP 0xFF629D: ตัวแบ่ง; // VOL + ตัวอักษร 0xFF22DD: ตัวแบ่ง // FAST BACK case 0xFF02FD: break; // PAUSE case 0xFFC23D: break; // FAST FORWARD case 0xFFE01F: break; // กรณีดาวน์ 0xFFA857: ตัวแบ่ง; // VOL- กรณี 0xFF906F: break; // UP กรณี 0xFF9867: หยุด; // EQ case 0xFFB04F: break; // กรณี ST / REPT 0xFF6897: alarm = 0; เพิ่ม (); ทำลาย; // 0 กรณี 0xFF30CF: สัญญาณเตือน = 1; เพิ่ม (); ทำลาย; // 1 กรณี 0xFF18E7: การเตือนภัย = 2; เพิ่ม (); ทำลาย; // 2 case 0xFF7A85: alarm = 3; เพิ่ม (); ทำลาย; // 3 case 0xFF10EF: alarm = 4; เพิ่ม (); ทำลาย; // 4 กรณี 0xFF38C7: การแจ้งเตือน = 5; เพิ่ม (); ทำลาย; // 5 กรณี 0xFF5AA5: การปลุก = 6; เพิ่ม (); ทำลาย; // 6 case 0xFF42BD: alarm = 7; เพิ่ม (); ทำลาย; // 7 กรณี 0xFF4AB5: การปลุก = 8; เพิ่ม (); ทำลาย; // 8 case 0xFF52AD: alarm = 9; เพิ่ม (); ทำลาย; // 9 case 0xFFFFFFFF: break; เริ่มต้น: ทำลาย; } ล่าช้า (500); } void add () {destination_time + = String (การเตือน); } การตั้งค่าโมฆะ () {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); float tempC = tempK - 273.15; float tempF = (tempC * 9.0) / 5.0 + 32.0; dt = clock.getDateTime (); lcd.setCursor (0, 0); lcd.print (รูปแบบ clock.date ("dmY H: i: s", dt)); lcd.setCursor (0, 1); lcd.print (String (tempC) + "" + String ((ถ่าน) 223) + "C"); if (irrecv.decode (& results)) {translateIR (); irrecv.resume (); } ชั่วโมง = clock.dateFormat ("H", dt); นาที = clock.dateFormat ("i", dt); current_time = ชั่วโมง + นาที; ถ้า (current_time == destination_time && alarm_state == จริง) {pinMode (เสียงสูง) } else {pinMode (เสียงสัญญาณ, ต่ำ); } if (alarm_state == true) {lcd.setCursor (10, 1); lcd.print ( "!"); } else {lcd.setCursor (10, 1); lcd.print (""); } if (destination_time.length () == 4) {lcd.setCursor (11, 1); lcd.print (destination_time); } อื่น ๆ หาก (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "ประเภท"); } else {lcd.setCursor (11, 1); lcd.print ( "ประเภท"); destination_time = ""; } ล่าช้า (1, 000); }
- เคล็ดลับ: คัดลอกรหัสนี้ลงใน IDE ของคุณและปรับตามที่ต้องการ คุณสามารถดูคำอธิบายโดยละเอียดของบรรทัดรหัสได้ในแกลเลอรี่รูปภาพของเรา
ในบทความถัดไปเราจะอธิบายว่าคุณสามารถควบคุมโมดูล GSM ด้วย Arduino ได้อย่างไร