Arduino: xây dựng đồng hồ báo thức - cách thức hoạt động
Trong mẹo thực tế này, bạn sẽ học cách xây dựng đồng hồ báo thức với Arduino. Thật dễ dàng với mã đúng.
Arduino: xây dựng đồng hồ báo thức - cách thức hoạt động
Đối với đồng hồ báo thức Arduino, bạn cần có nguồn điện, máy thu hồng ngoại có điều khiển từ xa, còi, mô-đun thời gian thực DS3231, nhiệt điện trở, màn hình LCD và tất nhiên là bảng mạch bánh mì và Arduino với cáp nhảy phù hợp.
- Trước tiên, hãy cắm nguồn điện đúng cách trên bảng mạch và đảm bảo rằng nó được đặt thành 5 volt ở cả hai bên.
- Kết nối máy thu hồng ngoại với các thanh cộng và trừ và với chân 3.
- Kết nối bộ rung hoạt động với chân 13 và với mặt đất (thanh trừ).
- Mô-đun DS3231 cũng được kết nối với các thanh cộng và trừ. Đồng thời kết nối SDA với SDA và SCL với SCL trên Arduino.
- Bây giờ bạn cần nhiệt điện trở, cũng được kết nối với 5 volt và tương tự 0 thông qua điện trở 10 kOhm.
- Cuối cùng, bạn phải kết nối LCD. K được kết nối với - và A đến +. Các chân D4 đến D7 kết nối với các chân 9 đến 12 trên Arduino. Bây giờ bạn phải kết nối E với chân 8, RW với thanh dấu trừ và RS với chân 7. Kết nối chân V0 với chiết áp 10k, được kết nối với 5V và nối đất. Cuối cùng, kết nối VDD với 5V và VSS xuống đất.
Lập trình đồng hồ báo thức Arduino
Nếu bạn đã thiết lập mọi thứ đúng cách, bạn có thể lập trình đồng hồ báo thức Arduino. Chúng tôi đã viết một mã mẫu nhỏ cho việc này:
- #include #include #include #include "IRremote.h" int tempPin = 0; Đồng hồ DS3231; RTCDateTime dt; Màn hình LCD LiquidCstall (7, 8, 9, 10, 11, 12); int nhận = 3; IRrecv irrecv (người nhận); kết quả decode_results; báo động int; boolean alarm_state = false; Chuỗi giờ; Chuỗi đích_time; Chuỗi phút; Chuỗi current_time; int buzzer = 13; void translateIR () {switch (results.value) {case 0xFFA25D: alarm_state =! alarm_state; break; // Trường hợp POWER 0xFFE21D: break; // Trường hợp FUNC / STOP 0xFF629D: break; // VOL + case 0xFF22DD: break; // Trường hợp BACK NHANH 0xFF02FD: break; // Trường hợp PAUSE 0xFFC23D: break; // Trường hợp NHANH CHÓNG 0xFFE01F: break; // trường hợp XUỐNG 0xFFA857: break; // VOL- trường hợp 0xFF906F: break; // Trường hợp LÊN 0xFF9867: break; // Trường hợp EQ 0xFFB04F: break; // Trường hợp ST / REPT 0xFF6897: alarm = 0; thêm (); break; // 0 trường hợp 0xFF30CF: alarm = 1; thêm (); break; // 1 trường hợp 0xFF18E7: alarm = 2; thêm (); break; // 2 trường hợp 0xFF7A85: alarm = 3; thêm (); break; // 3 trường hợp 0xFF10EF: alarm = 4; thêm (); break; // 4 trường hợp 0xFF38C7: alarm = 5; thêm (); break; // 5 trường hợp 0xFF5AA5: alarm = 6; thêm (); break; // 6 trường hợp 0xFF42BD: alarm = 7; thêm (); break; // 7 trường hợp 0xFF4AB5: alarm = 8; thêm (); break; // 8 trường hợp 0xFF52AD: alarm = 9; thêm (); break; // 9 trường hợp 0xFFFFFFFF: break; mặc định: phá vỡ; } độ trễ (500); } void add () {Destination_time + = String (báo động); } void setup () {pinMode (buzzer, OUTPUT); LCD.begin (16, 2); clock.begin (); clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void loop () {int tempRead = analogRead (tempPin); gấp đôi tempK = log (10000.0 * ((1024.0 / tempRead - 1))); tempK = 1 / (0, 001129148 + (0, 000234125 + (0, 0000000876741 * tempK * tempK)) * tempK); phao nổi tempC = tempK - 273, 15; float tempF = (tempC * 9.0) / 5.0 + 32.0; dt = clock.getDateTime (); lcd.setCoder (0, 0); lcd.print (định dạng clock.date ("dmY H: i: s", dt)); lcd.setCoder (0, 1); lcd.print (Chuỗi (tempC) + "" + Chuỗi ((char) 223) + "C"); if (irrecv.decode (& results)) {translateIR (); irrecv.resume (); } giờ = clock.dateFormat ("H", dt); phút = clock.dateFormat ("i", dt); current_time = giờ + phút; if (current_time == Destination_time && alarm_state == true) {pinMode (buzzer, CAO); } other {pinMode (buzzer, THẤP); } if (alarm_state == true) {lcd.setCoder (10, 1); lcd.print ( "!"); } other {lcd.setCoder (10, 1); lcd.print (""); } if (Destination_time.length () == 4) {lcd.setCoder (11, 1); lcd.print (destination_time); } if if (Destination_time.length () <4) {lcd.setCoder (11, 1); lcd.print ( "TYPE"); } other {lcd.setCoder (11, 1); lcd.print ( "TYPE"); đích_time = ""; } độ trễ (1000); }
- Mẹo: Sao chép mã này vào IDE của bạn và điều chỉnh nó theo yêu cầu. Bạn có thể tìm thấy một lời giải thích chi tiết về các dòng mã trong bộ sưu tập hình ảnh của chúng tôi.
Trong bài viết tiếp theo, chúng tôi sẽ giải thích cách bạn có thể điều khiển mô-đun GSM bằng Arduino.