4. I2C LCD와 DS1302 RTC모듈을 이용한 전자시계
페이지 정보
작성자 관리자 댓글 0건 조회 4,956회 작성일 18-11-20 17:30본문
I2C LCD와 DS1302 RTC 모듈을 이용해 요일/날짜/시간 기능이 있는 간단한 아두이노 전자시계를 만들어 보자.
(1) 회로도 구성
DS1302 RTC 모듈은 VCC에 5V 전원을, GND에 아두이노 보드의 GND에, CLK를 아두이노 4핀, DAT을 아두이노 3핀, RST를 아두이노 2핀에 연결한다.
(2) RTC 모듈 라이브러리 설치
http://www.rinkydinkelectronics.com/library.php?id=5
압축을 풀어서 아두이노 라이브러리 폴더에 복사합니다.
아두이노 스케치를 다시 시작합니다.
아래 부분에 DS1302가 추가되었다.
(3) 소스코딩
#include <DS1302.h> // DS1302 RTC 라이브러리
#include <Wire.h> // i2C 통신을 위한 라이브러리
#include <LiquidCrystal_I2C.h> // LCD 1602 I2C용 라이브러리
LiquidCrystal_I2C lcd(0x3F,16,2); // 접근주소: 0x3F or 0x27
DS1302 rtc(2,3,4); // RTC 객체
void setup(){
Serial.begin(9600);
//시간을 run-mode로 설정
rtc.halt(true);
// 쓰는 것을 방지하는 비활성화 역할
rtc.writeProtect(true);
/* Initialise the serial port */
Serial.begin(9600);
/* Set the time and date */
/*
// MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
rtc.setDOW(WEDNESDAY); // 요일 설정
rtc.setTime(16, 50, 0); // 시간설정, 순서대로 (시,분,초)
rtc.setDate(21,11,2018); // 날짜 설정, 순서대로 (일, 월, 년)
*/
lcd.init(); // LCD 초기화
lcd.backlight(); // 백라이트 켜기
}
void loop(){
Serial.print(rtc.getDOWStr()); //날짜
Serial.print(" ");
Serial.print(rtc.getDateStr()); //요일
Serial.print(" -- ");
Serial.println(rtc.getTimeStr()); //시간
lcd.clear();
lcd.setCursor(0,0);
lcd.print(rtc.getDOWStr());
lcd.setCursor(3,1);
lcd.print(rtc.getDateStr());
lcd.setCursor(8,0);
lcd.print(rtc.getTimeStr());
delay(1000); // 1초 딜레이
}
요일/날짜/시간 설정 코드에는 현재 시각을 정확히 넣으면 되고, 넣은 코드는 RTC 모듈에 저장이 되므로 아두이노에 전원 공급이 않되어도 시간이 초기화 되지 않는다.
(4) 실행 결과
시리얼 모니터와 텍스트LCD에 시간이 출력되는 것을 확인한다.
댓글목록
등록된 댓글이 없습니다.