아두이노

본문 바로가기

사이트 내 전체검색


4. I2C LCD와 DS1302 RTC모듈을 이용한 전자시계

페이지 정보

작성자 관리자 댓글 0건 조회 4,702회 작성일 18-11-20 17:30

본문

 

I2C LCD와 DS1302 RTC 모듈을 이용해 요일/날짜/시간 기능이 있는 간단한 아두이노 전자시계를 만들어 보자.



(1) 회로도 구성


그림입니다.
원본 그림의 이름: CLP0000427c4187.bmp
원본 그림의 크기: 가로 296pixel, 세로 588pixel


그림입니다.
원본 그림의 이름: CLP0000427c0001.bmp
원본 그림의 크기: 가로 288pixel, 세로 512pixel


그림입니다.
원본 그림의 이름: CLP0000427c0002.bmp
원본 그림의 크기: 가로 560pixel, 세로 490pixel


DS1302 RTC 모듈은 VCC에 5V 전원을, GND에 아두이노 보드의 GND에, CLK를 아두이노 4핀, DAT을 아두이노 3핀, RST를 아두이노 2핀에 연결한다.



(2) RTC 모듈 라이브러리 설치


http://www.rinkydinkelectronics.com/library.php?id=5


그림입니다.
원본 그림의 이름: CLP0000427c0003.bmp
원본 그림의 크기: 가로 678pixel, 세로 154pixel

그림입니다.
원본 그림의 이름: CLP0000427c0004.bmp
원본 그림의 크기: 가로 730pixel, 세로 530pixel


압축을 풀어서 아두이노 라이브러리 폴더에 복사합니다.


그림입니다.
원본 그림의 이름: CLP0000427c0005.bmp
원본 그림의 크기: 가로 683pixel, 세로 336pixel


아두이노 스케치를 다시 시작합니다.


그림입니다.
원본 그림의 이름: CLP0000427c0007.bmp
원본 그림의 크기: 가로 585pixel, 세로 890pixel

아래 부분에 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에 시간이 출력되는 것을 확인한다.

그림입니다.
원본 그림의 이름: CLP00003c801831.bmp
원본 그림의 크기: 가로 527pixel, 세로 324pixel


그림입니다.
원본 그림의 이름: CLP00003c800001.bmp
원본 그림의 크기: 가로 791pixel, 세로 411pixel



댓글목록

등록된 댓글이 없습니다.



개인정보취급방침 서비스이용약관
Copyright © www.leelab.co.kr All rights reserved.
상단으로
TEL. 063-469-4551 FAX. 063-469-4560
전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과
PC 버전으로 보기