아두이노 코딩-29: 아두이노 PM 측정기를 그대로 lcd 시계로 바꾸어 보자

codingart(66)
Published in
#kr
Words
241
Reading
2 min
Listen
Play
8y

noname01.png

여러 가지 아두이노 코딩을 하면서도 한번씩 별도의 하드웨어가 필요치 않는 순수 코딩 변경으로가능한 시계 코딩을 때때로 재미삼아 해보자. 나중에 와이파이 코딩이나 블루투스 코딩이나 앱 인벤터 코딩 과정에서도 심심치 않게 비슷한 작업이 이루어질 것이다.

시리얼 모니터를 사용하는 아두이노 시계 코드는 별도의 하드웨어나 센서 부품을 전혀 사용하지 않는다. 따라서 앞서 만든 미세먼지 측정기에 i2c lcd 디스플레이가 이미 설치되어 있다면 Wire.h 라이브러리와 LiquidCrystal_I2C.h 라이브러리를 불러오고 클라스 명령 LiquidCrystal_I2C lcd(0x3F,16,2)을 선언하자.

noname02.png

setup()에서 lcd 초기화 및 backlight 지원 선언이 추가된다.

noname03.png

loop()에서 다음과 같이 lcd 출력 명령을 추가하자.

noname04.png

수정한 코드를 저장 후 컴파일 업로드 하자. 업로딩 후 시리얼 모니터를 오픈해서 현재의 시간 분 데이타를 아래와 같이 입력하자. 일분 마다 한번씩 시간 정보를 갱신해주는 lcd를 볼 수 있다.

noname05.png

연관된 블로그를 참조하자.
초보자를 위한 아두이노 코딩 입문-19: 아두이노 코딩 시계 종류와 시리얼 모니터 시계 코딩
https://steemit.com/kr/@codingart/19

//i2c_lcd_clock_01
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);

unsigned long currentHr = 0;
unsigned long currentMin = 0;

void setup() {
Serial.begin(9600);
Serial.println("Clock setting data with 0000 in HR & Min");
while( Serial.available() == 0 ) {
}
lcd.init();
lcd.backlight();
int hrmin = Serial.parseInt();
currentHr = hrmin/100;
Serial.print(currentHr);
Serial.print(" ");
currentMin = hrmin%100;
Serial.println(currentMin);
}

void loop() {

unsigned long currentMillis = millis();
unsigned long hr = currentHr + currentMillis/3600000;
currentMillis = currentMillis%3600000;
unsigned long minute = currentMin + currentMillis/60000;
unsigned long second = currentMillis%60000;
unsigned long sec = second/1000;

if( hr <12 ) {
  lcd.setCursor(3,0);
  lcd.print("AM");
  Serial.println("AM");
}
else if( hr <24 ) {
  lcd.setCursor(3,0);
  lcd.print("PM");
  Serial.print("PM  ");
}
else {
  hr = hr -24;
  lcd.setCursor(3,0);
  lcd.print("AM");
  Serial.print("AM  ");
}

if( minute >= 60 ) {
  hr = hr + 1;
  minute = minute - 60;
}
Serial.print((unsigned long)hr);
Serial.print(":");
Serial.println((unsigned long)minute);
lcd.print(hr);
lcd.print(":");
lcd.print(minute);
delay(60000);     

}//끝