[아두이노] 42. 병아리 부화기 및 육추기 겸용 만들기 (10) 1602 I2C LCD 소스 코드
임베디드/아두이노2024. 5. 30. 22:55
이번에는 가장 중요한 정보를 출력해주는 1602 I2C LCD 부분에 대해서 코드를 작성해 보도록 하겠습니다.
아래와 같이 작동되는 화면을 보실 수 있으며, 온도와 습도, 그리고 경과 일자 시간을 표시합니다.
소스코드를 보도록 하겠습니다.
Incubator_Main.ino
...
#include <LiquidCrystal_I2C.h>
...
bool b_Print = true;
byte EggChar[] = { B01110, B10001, B10011, B11001, B10111, B10001, B10001, B01110 }; // 달걀 모양 (문자)
byte HeartChar[] = { B01110, B10001, B11011, B10101, B10001, B01110, B00100, B11011 }; // 병아리 모양 (문자)
...
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
...
lcd.init();
lcd.backlight();
lcd.createChar(0, EggChar);
lcd.createChar(1, HeartChar);
...
}
void loop()
{
...
if(millis()-beforeTime>=1000)
{
...
nowTime++;
beforeTime = millis();
...
}
// 화면 출력
LCD_Print();
}
_lcd.ino
// 화면 출력
void LCD_Print()
{
if(b_Print == false) return;
lcd.setCursor(0,0);
if(mode == 0) lcd.write(0); // 달갈 모양
else lcd.write(1); // 병아리 모양
lcd.print(" ");
lcd.print(NTC, 1); // 온도 출력
lcd.write(223); // 'C 글자의 '출력
lcd.print("C ");
lcd.print((int)humidity); // DHT11 소수점 표시 안됨
// lcd.print(humidity,1); // DHT22 일경우
lcd.print("%");
// day : 일수
lcd.setCursor(0,1);
lcd.print("Day:");
lcd.print(day);
lcd.print(" ");
// 시
if(hour<10) lcd.print("0");
lcd.print(hour);
lcd.print(":");
// 분
if(min<10) lcd.print("0");
lcd.print(min);
lcd.print(":");
// 초
if(sec<10) lcd.print("0");
lcd.print(sec);
}
화면 출력은 별로 어려울게 없고 생각보다 간단합니다. 저장된 변수의 값을 지정된 위치에 출력해주면 됩니다.
'임베디드 > 아두이노' 카테고리의 다른 글
[아두이노] 44. 병아리 부화기 및 육추기 겸용 만들기 (12) EEPROM 저장 소스 코드 (0) | 2024.05.31 |
---|---|
[아두이노] 43. 병아리 부화기 및 육추기 겸용 만들기 (11) 버튼 소스 코드 (0) | 2024.05.31 |
[아두이노] 41. 병아리 부화기 및 육추기 겸용 만들기 (9) 가습&팬 소스코드 (0) | 2024.05.30 |
[아두이노] 40. 병아리 부화기 및 육추기 겸용 만들기 (8) 전구 HEAT 소스 코드 (0) | 2024.05.29 |
[아두이노] 39. 병아리 부화기 및 육추기 겸용 만들기 (7) 전란기 소스 코드 (0) | 2024.05.28 |