내가 보려고 만든 블로그

아두이노 시계 본문

아두이노

아두이노 시계

hjh1023 2020. 9. 8. 15:33
반응형

ds1302모듈과 lcd1602를 이용해서 현재시간을 lcd로 나타나게 했다.

#include <DS1302.h>
#include <LiquidCrystal.h>
#include <Wire.h>    
#include <LiquidCrystal_I2C.h>        // LCD 1602 I2C용 라이브러리
LiquidCrystal_I2C lcd(0x27,16,2);     // 접근주소: 0x3F or 0x27
 
// DS1302와 연결되는 아두이노 핀 번호
const int kCePin   = 8;   // Chip Enable
const int kIoPin   = 7;   // Input/Output
const int kSclkPin = 6;   // Serial Clock
 
//  DS1302 오브젝트 생성
DS1302 rtc(kCePin, kIoPin, kSclkPin);
 
// 요일 코드에 알맞는 문자열 출력
String dayAsString(const Time::Day day) {
  switch (day) {
    case Time::kSunday: return "SUN";
    case Time::kMonday: return "MON";
    case Time::kTuesday: return "TUE";
    case Time::kWednesday: return "WED";
    case Time::kThursday: return "THU";
    case Time::kFriday: return "FRI";
    case Time::kSaturday: return "SAT";
  }
  return "";
}
 
// 날짜, 시간 출력
void printTime() {
  // 칩에 저장된 시간을 읽어옵니다. 
  Time t = rtc.time();
 
  // 요일 코드에 알맞는 문자열 가져오기
  const String day = dayAsString(t.day);
 
  // 날짜 출력
  char buf[20];
  snprintf(buf, sizeof(buf), "%04d-%02d-%02d %s", t.yr, t.mon, t.date, day.c_str());
  lcd.setCursor(0, 0);
  lcd.print(buf);
 
  // 시간 출력
  snprintf(buf, sizeof(buf), "%02d:%02d:%02d", t.hr, t.min, t.sec);
  lcd.setCursor(0, 1);
  lcd.print(buf);
}
 
void setup() {
  Serial.begin(115200);
 
  // 새로운 날짜와 시간 정보를 칩에 저장합니다. 
  // 이 작업은 시간을 맞출때만 사용하며, 평상시에는 주석(//) 처리되어 있어야 합니다.
  // rtc.writeProtect(false);
  // rtc.halt(false);
  // Time t(2017, 6, 17, 14, 49, 00, Time::kSaturday);
  // rtc.time(t);
 
  // 사용된 LCD의 글자수
  lcd.begin(16, 2);
}
 
// 1초마다 날짜와 시간을 출력합니다.
void loop() {
  printTime();
  delay(1000);
}
반응형

'아두이노' 카테고리의 다른 글

아두이노 7세그먼트(7segment led)  (0) 2020.09.08
아두이노 5v Relay  (0) 2020.09.08
아두이노 ds1302 realtime_clock  (0) 2020.09.08
아두이노 4x4 keypad Test  (0) 2020.09.08
아두이노 3color led test  (0) 2020.09.08