arduino uno에 연결된 LCD에 현재 날짜/시간(RTC) 출력하기Arduino Uno2016. 6. 10. 10:43
Table of Contents
반응형
character LCD를 위 그림처럼 연결합니다.
아두이노와 DS1302 RTC를 아래처럼 연결해줍니다. 이전에는 VCC를 3.3V에 연결해도 잘 동작했는데.. LCD를 연결해서 그런지 제대로 동작하지 않아서 VCC와 GND를 디지털핀에 연결해주고 각각 핀상태를 HIGH와 LOW상태로 만들었습니다..
DS1302 RTC ----- Arduino UNO
RST 8
DAT 9
CLK 10
GND 7
VCC 6
아래 주소에서 라이브러리를 다운로드 받아 압축을 풀어서
http://playground.arduino.cc/uploads/Main/DS1302RTC.zip
아래 위치에 복사해줍니다..
아래 주소에서 라이브러리를 다운로드 받아 압축을 풀어서
https://github.com/PaulStoffregen/Time
아래 위치에 복사해줍니다..
아두이노에 다음 소스코드를 업로드합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #include <Time.h> #include <DS1302RTC.h> // Set pins: CE(reset),IO(dat),CLK DS1302RTC RTC(8, 9, 10); void setup() { lcd.begin(16, 2); //16열 2줄짜리 LCD임을 설정해줌. // Setup Serial connection Serial.begin(9600); Serial.println("DS1302RTC Read Test"); Serial.println("-------------------"); // Activate RTC module digitalWrite(7, LOW); pinMode(7, OUTPUT);//GROUND pin digitalWrite(6, HIGH); pinMode(6, OUTPUT);//VCC pin Serial.println("RTC module activated"); Serial.println(); delay(500); if (RTC.haltRTC()) { Serial.println("The DS1302 is stopped. Please run the SetTime"); Serial.println("example to initialize the time and begin running."); Serial.println(); } if (!RTC.writeEN()) { Serial.println("The DS1302 is write protected. This normal."); Serial.println(); } time_t t; tmElements_t tm; delay(5000); //시간을 맞춰야할때 주석을 풀어서 설정합니다.. /* tm.Year = CalendarYrToTm(2016); tm.Month = 6; tm.Day = 9; tm.Hour = 21; tm.Minute = 00; tm.Second = 00; t = makeTime(tm); if(RTC.set(t) == 0) { // Success setTime(t); Serial.print("RTC set to: "); printDateTime(t); Serial.println(""); } else Serial.println("RTC set failed!"); */ } void loop() { tmElements_t tm; char mdate[255],mtime[255]; //현재 날짜 / 시간을 가져옴 if (! RTC.read(tm)) { sprintf( mdate, "%04d-%02d-%02d", tmYearToCalendar(tm.Year), tm.Month, tm.Day); sprintf(mtime, "%02d:%02d:%02d", tm.Hour, tm.Minute, tm.Second ); } else { Serial.println("DS1302 read error! Please check the circuitry."); Serial.println(); delay(9000); } lcd.setCursor(0, 0); lcd.print(mdate); Serial.println(mdate); lcd.setCursor(0, 1); lcd.print(mtime); Serial.println(mtime); // Wait one second before repeating :) delay (2000); } void print2digits(int number) { if (number >= 0 && number < 10) Serial.write('0'); Serial.print(number); } //print date and time to Serial void printDateTime(time_t t) { printDate(t); Serial.print(' '); printTime(t); } //print time to Serial void printTime(time_t t) { printI00(hour(t), ':'); printI00(minute(t), ':'); printI00(second(t), ' '); } //print date to Serial void printDate(time_t t) { printI00(day(t), 0); Serial.print(monthShortStr(month(t))); Serial.print(year(t)); } //Print an integer in "00" format (with leading zero), //followed by a delimiter character to Serial. //Input value assumed to be between 0 and 99. void printI00(int val, char delim) { if (val < 10) Serial.print('0'); Serial.print(val); if (delim > 0) Serial.print(delim); return; } | cs |
반응형
'Arduino Uno' 카테고리의 다른 글
Arduino UNO를 브레드보드로 제작하기(DIY) (0) | 2016.08.27 |
---|---|
Arduino UNO에서 dht-22 온도 / 습도 센서 사용하기 (0) | 2016.06.21 |
arduino uno에서 ds18b20온도 센서값과 RTC(날짜,시간)값을 MYSQL에 데이터 넣기 (30) | 2016.06.10 |
Arduino Mega 2560에 TFT LCD 연결하기 (0) | 2016.05.30 |
아두이노 예제 - 가변저항 사용하기 (0) | 2016.01.13 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!