Arduino : 알람 시계 제작-작동 방식
이 실용적인 팁에서는 Arduino로 알람 시계를 작성하는 방법을 배웁니다. 올바른 코드를 사용하면 쉽습니다.
Arduino : 알람 시계 제작-작동 방식
Arduino 알람 시계의 경우 전원 공급 장치, 리모콘이있는 IR 수신기, 버저, DS3231 실시간 모듈, 서미스터, LCD 및 브레드 보드 및 일치하는 점퍼 케이블이있는 Arduino가 필요합니다.
- 먼저 브레드 보드에 전원 공급 장치를 올바른 방향으로 꽂고 양쪽에서 5V로 설정되어 있는지 확인하십시오.
- 적외선 수신기를 플러스 및 마이너스 바 및 핀 3에 연결합니다.
- 활성 버저를 13 번 핀과 그라운드 (마이너스 바)에 연결하십시오.
- DS3231 모듈은 플러스 및 마이너스 바에도 연결됩니다. 또한 Arduino의 SDA를 SDA에, SCL을 SCL에 연결하십시오.
- 이제 서미스터가 필요합니다. 서미스터는 5 볼트 및 10kΩ 저항을 통해 아날로그 0에 연결됩니다.
- 마지막으로 LCD를 연결해야합니다. K는-에 연결되고 A는 +에 연결됩니다. 핀 D4 ~ D7은 Arduino의 핀 9 ~ 12에 연결됩니다. 이제 E를 핀 8에, RW를 빼기 막대에, RS를 핀 7에 연결해야합니다. 핀 V0을 5V 및 접지에 연결된 10k 전위차계에 연결합니다. 마지막으로 VDD를 5V에 연결하고 VSS를 접지에 연결하십시오.
Arduino 알람 시계 프로그래밍
모든 것을 올바르게 설정했다면 Arduino 알람 시계를 프로그래밍 할 수 있습니다. 이를 위해 작은 샘플 코드를 작성했습니다.
- #include #include #include #include "IRremote.h"int tempPin = 0; DS3231 시계; RTCDateTime dt; LiquidCrystal LCD (7, 8, 9, 10, 11, 12); int 수신기 = 3; IRrecv irrecv (수신기); 해독 결과; int 알람; 부울 alarm_state = false; 문자열 시간; 문자열 destination_time; 문자열 분; 문자열 current_time; 정수 버저 = 13; void translateIR () {스위치 (결과 값) {case 0xFFA25D : alarm_state =! alarm_state; 휴식; // POWER 경우 0xFFE21D : break; // FUNC / STOP 케이스 0xFF629D : break; // VOL + case 0xFF22DD : 중단; // 빠른 뒤로 사례 0xFF02FD : break; // 일시 중지 사례 0xFFC23D : break; // 빨리 감기 사례 0xFFE01F : break; // DOWN case 0xFFA857 : 중단; // VOL- case 0xFF906F : 중단; // 대문자 0xFF9867 : 중단; // EQ 경우 0xFFB04F : 중단; // ST / REPT 사례 0xFF6897 : 알람 = 0; () 추가; 휴식; // 0 경우 0xFF30CF : 알람 = 1; () 추가; 휴식; // 1 개의 경우 0xFF18E7 : 알람 = 2; () 추가; 휴식; // 2 개의 경우 0xFF7A85 : 알람 = 3; () 추가; 휴식; // 3 가지 경우 0xFF10EF : 알람 = 4; () 추가; 휴식; // 4 가지 경우 0xFF38C7 : 알람 = 5; () 추가; 휴식; // 5 가지 경우 0xFF5AA5 : 알람 = 6; () 추가; 휴식; // 6 건 0xFF42BD : alarm = 7; () 추가; 휴식; // 7 경우 0xFF4AB5 : 알람 = 8; () 추가; 휴식; // 8 경우 0xFF52AD : alarm = 9; () 추가; 휴식; // 9 건 0xFFFFFFFF : 중단; 디폴트 : break; } 지연 (500); } void add () {destination_time + = 문자열 (알람); } void setup () {pinMode (부저, 출력); lcd. 시작 (16, 2); () clock.begin; clock.setDateTime (__ DATE__, __TIME__); irrecv.enableIRIn (); } void 루프 () {int tempReading = analogRead (tempPin); 이중 tempK = log (10000.0 * ((1024.0 / tempReading-1))); tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK); 플로트 tempC = tempK-273.15; float tempF = (tempC * 9.0) / 5.0 + 32.0; dt = clock.getDateTime (); lcd.set 커서 (0, 0); lcd.print (시계 날짜 형식 ( "dmY H : i : s", dt)); lcd.set 커서 (0, 1); lcd.print (문자열 (tempC) + ""+ 문자열 ((char) 223) + "C"); if (irrecv.decode (& results)) {translateIR (); irrecv.resume (); } 시간 = clock.dateFormat ( "H", dt); 분 = clock.dateFormat ( "i", dt); current_time = 시간 + 분; if (current_time == destination_time && alarm_state == true) {pinMode (부저, HIGH); } else {pinMode (부저, LOW); } 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); } else if (destination_time.length () <4) {lcd.setCursor (11, 1); lcd.print ( "TYPE"); } else {lcd.setCursor (11, 1); lcd.print ( "TYPE"); destination_time = ""; } 지연 (1000); }
- 팁 :이 코드를 IDE에 복사하고 필요에 따라 조정하십시오. 사진 갤러리에서 코드 라인에 대한 자세한 설명을 찾을 수 있습니다.
다음 기사에서는 Arduino로 GSM 모듈을 제어하는 방법에 대해 설명합니다.