본문 바로가기
아두이노

🚀 Arduino I2C LCD를 활용한 자동 이동 캐릭터

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

Arduino 프로젝트에서 LCD를 사용하면 텍스트 출력뿐만 아니라 애니메이션 효과도 적용할 수 있습니다. 특히, I2C 방식의 LCD를 활용하면 보다 적은 핀으로 연결할 수 있어 편리합니다.

이번 포스팅에서는 LiquidCrystal_I2C 라이브러리를 이용하여 커스텀 캐릭터를 생성하고, LCD 화면에서 자동 이동하는 애니메이션을 구현하는 방법을 알아보겠습니다.

🔹 LiquidCrystal_I2C 라이브러리란?

I2C 방식의 LCD는 기존 병렬 방식(Parallel LCD)보다 더 적은 핀을 사용하여 연결할 수 있는 방식입니다. 이를 쉽게 제어하기 위해 LiquidCrystal_I2C 라이브러리를 사용합니다.

핵심 기능:

  • LCD의 백라이트 및 기본 설정
  • lcd.createChar()를 이용한 커스텀 문자 생성
  • lcd.setCursor()를 활용한 위치 이동
  • lcd.clear()를 통한 화면 정리

이제 LCD에서 움직이는 캐릭터를 생성하는 코드를 만들어 보겠습니다!

 

🎭 1. 커스텀 캐릭터 생성하기

LCD에서는 사용자 정의 문자를 설정하여 캐릭터 같은 특별한 모양을 만들 수 있습니다. 이를 위해 lcd.createChar() 함수를 사용하여 8x8 픽셀의 캐릭터를 생성합니다.

✅ 코드 (커스텀 문자 생성)

#include <LiquidCrystal_I2C.h>
#define LCD_I2C_ADDR 0x27

LiquidCrystal_I2C lcd(LCD_I2C_ADDR, 16, 2);

byte character[8] = {B00000,
                     B01010,
                     B10101,
                     B00000,
                     B00100,
                     B10001,
                     B01110,
                     B00000};

void setup() {
  lcd.init();
  lcd.backlight();
  lcd.createChar(0, character); // 사용자 정의 문자 생성
}

💡 설명:

  • byte character[8]: 8x8 픽셀로 캐릭터 모양을 정의
  • lcd.createChar(0, character): LCD에 커스텀 문자 저장
  • lcd.init(); 및 lcd.backlight(); → LCD 초기화 및 백라이트 설정

🎬 2. LCD에서 캐릭터 이동 애니메이션 구현

LCD에서 캐릭터가 자동으로 움직이도록 애니메이션을 추가할 수 있습니다. 아래 코드는 캐릭터가 왼쪽에서 오른쪽으로 이동한 후 다시 반대 방향으로 움직이는 코드입니다.

✅ 코드 (캐릭터 이동 애니메이션)

 
void loop() {
  for (int i = 0; i < 16; i++) { // 오른쪽 이동
    lcd.clear();
    lcd.setCursor(i, 0);
    lcd.write(byte(0)); // 커스텀 문자 출력

    lcd.setCursor(2, 1);
    lcd.print("Arduino World!");
    
    delay(300);
  }

  for (int i = 15; i >= 0; i--) { // 왼쪽 이동
    lcd.clear();
    lcd.setCursor(i, 0);
    lcd.write(byte(0)); // 커스텀 문자 출력

    lcd.setCursor(2, 1);
    lcd.print("Arduino World!");
    
    delay(300);
  }
}

💡 설명:

  • 오른쪽으로 이동: for (int i = 0; i < 16; i++)
  • 왼쪽으로 이동: for (int i = 15; i >= 0; i--)
  • lcd.clear(); → 화면을 지우면서 자연스럽게 움직이도록 설정
  • lcd.setCursor(i, 0); → 캐릭터를 움직이는 위치로 변경
  • lcd.write(byte(0)); → 저장된 커스텀 캐릭터를 출력

🎯 마무리

이번 포스팅에서는 I2C 방식의 LCD를 활용한 커스텀 캐릭터 출력 및 자동 이동 애니메이션을 구현해 보았습니다. 이 방식은 다양한 게임 요소, 애니메이션 효과 및 프로젝트에 적용할 수 있습니다.

추가 확장 가능 기능:

  • 버튼을 추가하여 사용자가 직접 이동 조작
  • 여러 개의 캐릭터를 동시에 출력하여 다양한 인터랙션 구현
  • 센서를 활용하여 움직임을 감지하는 방식 추가

💡 추가 기능을 원하신다면 댓글로 남겨 주세요! 🚀 Happy Coding! 🎮

728x90
반응형