본문 바로가기
아두이노

Arduino와 LiquidCrystal 라이브러리를 활용한 LCD 출력 제어

by 모빌리티키즈 2025. 5. 15.
728x90
반응형

Arduino 프로젝트를 진행하다 보면 LCD 화면을 활용하여 정보를 출력하는 경우가 많습니다. 특히, LiquidCrystal 라이브러리를 사용하면 간단한 코드로 텍스트를 출력하고, 다양한 애니메이션 효과를 줄 수 있습니다.

이번 포스팅에서는 LCD 화면에 숫자 카운트업, 디스플레이 깜빡임 효과, 텍스트 이동 기능을 구현하는 코드와 설명을 제공합니다.

📌 1. LiquidCrystal 라이브러리란?

LiquidCrystal 라이브러리는 Arduino에서 LCD를 쉽게 제어할 수 있도록 도와주는 라이브러리입니다. 이를 활용하면 단순한 텍스트 출력뿐만 아니라 커서 이동, 화면 깜빡임, 스크롤 효과 등을 적용할 수 있습니다.

사용할 LCD는 16x2 (16칸 가로, 2줄 세로) 형식이며, 아래 핀을 활용하여 연결됩니다.

 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

이제 LCD를 활용한 주요 기능들을 구현해 보겠습니다.

 

🔢 2. 숫자 카운트업 기능

카운트업 기능은 count_up() 함수를 통해 숫자를 증가시키며 화면에 표시하는 기능입니다. LCD 화면의 첫 번째 줄에는 "Count Up" 문구를 표시하고, 두 번째 줄에 숫자가 출력되도록 설정했습니다.

 
void count_up() {
  lcd.print("Count Up");
  delay(500);
  
  for (int k = 0; k <= 10; k++) {
    lcd.setCursor(0, 1); // 두 번째 줄에 출력
    lcd.print("NO: ");
    lcd.print(k);
    delay(500);
  }
  
  lcd.clear();
}

설명:

  • lcd.setCursor(0, 1): 두 번째 줄에 텍스트를 출력하도록 설정
  • lcd.print(k): 숫자 카운트업
  • lcd.clear(): 화면을 지우고 다음 동작을 준비

✨ 3. 디스플레이 깜빡임 효과

LCD 화면을 깜빡이는 효과를 주어 강조하거나 시각적인 재미를 줄 수 있습니다. 아래 코드는 s_sec() 함수로 3번 깜빡이는 효과를 구현한 예제입니다.

 
void s_sec() {
  for (int k = 0; k < 3; k++) {
    lcd.noDisplay(); // 화면 끄기
    delay(1000);
    lcd.display(); // 화면 켜기
    delay(1000);
  }
  lcd.clear();
}

설명:

  • lcd.noDisplay(): LCD 화면을 비활성화
  • lcd.display(): LCD 화면을 다시 활성화
  • delay(1000): 1초 동안 유지

🔄 4. 텍스트 이동 효과

텍스트를 좌우로 이동하는 애니메이션을 적용하면 동적인 효과를 줄 수 있습니다. 아래 코드는 "Hello!" 문구를 오른쪽 또는 왼쪽으로 이동하는 함수입니다.

▶️ 오른쪽 이동 (setCursor_r())

 
void setCursor_r() {
  lcd.setCursor(6, 0);
  lcd.print("Hello!");
  
  for (int k = 0; k < 3; k++) {
    lcd.scrollDisplayRight();
    delay(500);
  }
  
  lcd.clear();
}

◀️ 왼쪽 이동 (setCursor_L())

 
void setCursor_L() {
  lcd.setCursor(6, 0);
  lcd.print("Hello!");
  
  for (int k = 0; k < 3; k++) {
    lcd.scrollDisplayLeft();
    delay(500);
  }
  
  lcd.clear();
}

설명:

  • lcd.scrollDisplayRight(): 화면을 오른쪽으로 이동
  • lcd.scrollDisplayLeft(): 화면을 왼쪽으로 이동
  • lcd.setCursor(6, 0): 텍스트를 6번째 칸에 위치

🔄 5. 전체 실행

모든 기능을 순차적으로 실행하도록 loop() 함수에서 조합하였습니다.

 
void loop() {
  count_up();
  delay(1000);
  s_sec();
  delay(1000);
  setCursor_r();
  delay(1000);
  setCursor_L();
  delay(1000);
}

동작 흐름: 1️⃣ 숫자 카운트업 → 2️⃣ 화면 깜빡임 → 3️⃣ 오른쪽 이동 → 4️⃣ 왼쪽 이동

각 기능을 1초 간격으로 실행하도록 설정하여 자연스럽게 동작합니다.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  
  lcd.print("Count Up");
  delay(1000);
  lcd.clear();
}

void count_up() {
  lcd.print("Count Up");
  delay(500);
  
  for (int k = 0; k <= 10; k++) {
    lcd.setCursor(0, 1); // Move to second row
    lcd.print("NO: ");
    lcd.print(k);
    delay(500);
  }
  
  lcd.clear();
}

void s_sec() {
  for (int k = 0; k < 3; k++) {
    lcd.noDisplay();
    delay(1000);
    lcd.display();
    delay(1000);
  }
  lcd.clear();
}

void setCursor_r() {
  lcd.setCursor(6, 0);
  lcd.print("Hello!");
  
  for (int k = 0; k < 3; k++) {
    lcd.scrollDisplayRight();
    delay(500);
  }
  
  lcd.clear();
}

void setCursor_L() {
  lcd.setCursor(6, 0);
  lcd.print("Hello!");
  
  for (int k = 0; k < 3; k++) {
    lcd.scrollDisplayLeft();
    delay(500);
  }
  
  lcd.clear();
}

void loop() {
  count_up();
  delay(1000);
  s_sec();
  delay(1000);
  setCursor_r();
  delay(1000);
  setCursor_L();
  delay(1000);
}

🎯 마무리

이번 포스팅에서는 Arduino LCD를 활용한 카운트업, 깜빡임, 텍스트 이동 기능을 구현하는 코드를 다뤄봤습니다. 이러한 기능을 조합하면 더 멋진 UI를 만들 수 있으며, 다른 프로젝트에서도 응용할 수 있습니다.

💡 혹시 추가로 원하는 기능이 있다면 댓글로 남겨 주세요! 😊 Happy Coding! 🚀

728x90
반응형