라즈베리파이 lcd 출력 - lajeubelipai lcd chullyeog

RPi_I2C_LCD_driver

Raspberry Pi I2C LCD 모듈 Python 라이브러리

I2C (1602) LCD 모듈을 Raspberry PI에서 Arduino LiquidCrystal_I2C라이브러리와 유사하게 사용할 수 있는 라이브러리 파일 입니다.

단, 언어의 차이점 부분은 고려해 주어야 합니다.
아두이노 - LiquidCrystal C C++
라즈베리파이 - RPi_I2C_LCD_driver Python

  • 관련 제품
    LCD 1602 llC I2C모듈(5V)
    5V-3.3V Logic Level converter

필수 설정 & 설치 라이브러리

  • Raspberry Pi Configuration -> Enable I2C
    라즈베리파이 설정에서 I2C를 꼭 Enable해 주어야 합니다.

sudo apt-get install python-smbus
sudo apt-get install python3-smbus

smbus를 사용할 파이썬 버전에 맞춰 설치해 줍니다.

  • I2C adress 확인 명령어 - LCD연결 후 확인 가능

i2cdetect -y 1

start.sh

별도의 라이브러리 등록 과정 없이 예제코드(example)를 실행하기 위해 드라이버 파일을 각 디렉토리에 복사해 줍니다
(라이브러리 등록을 할 경우 실행할 필요가 없습니다.)

chmod +x start.sh
./start.sh

회로 구성

3.3V LCD 직접 연결

라즈베리파이 lcd 출력 - lajeubelipai lcd chullyeog

5V LCD Level converter 이용하여 연결

라즈베리파이 lcd 출력 - lajeubelipai lcd chullyeog

함수 설명

  • LiquidCrystal()
    사용되지 않음, 클래스 정의시 자동으로 초기화 + I2C 방식으로 address 입력 (기본값 0x27)

lcd = RPi_I2C_driver.lcd(0x27)

  • begin()
    사용되지 않음, 클래스 정의시 자동으로 초기화, 아래와 같이 추가 옵션 입력 가능 (기본값 0x27, 1602 size)

lcd = RPi_I2C_driver.lcd(0x27, 16, 2)

  • clear()
    LCD의 내용을 전부 지우고 커서 위치 초기화

  • home()
    커서 위치 0,0으로 초기화

  • setCursor(col, row)
    커서 위치 이동

  • write(hex_data, delay)
    LCD에 문자 출력
    int 타입 입력 시 ROM에서 해당하는 문자 출력

  • print(str(char)_data, delay)
    LCD에 문자문자열 출력
    int 타입 입력 시 숫자(DEX10진수)를 그대로(문자열) 출력

  • cursor()
    밑줄 커서 켜기

  • noCursor()
    밑줄 커서 끄기

  • blink()
    깜박이는 (하얀 박스) 커서 켜기

  • noBlink()
    깜박이는 (하얀 박스) 커서 끄기

  • display()
    noDisplay()로 끈 LCD를 다시 켭니다.
    (noDisplay()로 사라진 글자가 남아있습니다.)

  • noDisplay()
    현재 텍스트를 보존한 상태로 LCD 끄기
    (현재 출력되어있는 글자는 남아있습니다.)

  • scrollDisplayLeft()
    디스플레이 내용 (텍스트 및 커서)을 한 칸 왼쪽으로 스크롤합니다.

  • scrollDisplayRight()
    디스플레이 내용 (텍스트 및 커서)을 한 칸 오른쪽으로 스크롤합니다.

  • autoscroll()
    LCD의 자동 스크롤을 켭니다. 이렇게하면 각 문자 출력이 디스플레이로 이동하여 이전 문자를 한 칸 넘게 밀어 넣을 수 있습니다.
    현재 텍스트 방향이 왼쪽에서 오른쪽 (기본값)이면 디스플레이가 왼쪽으로 스크롤됩니다.
    현재 방향이 오른쪽에서 왼쪽이면 디스플레이가 오른쪽으로 스크롤됩니다.
    이것은 새로운 문자를 LCD의 같은 위치에 출력하는 효과가 있습니다.

  • noAutoscroll()
    LCD의 자동 스크롤을 끕니다.

  • leftToRight()
    LCD에 쓰여지는 텍스트의 방향을 왼쪽에서 오른쪽, 기본값으로 설정하십시오.
    즉, 디스플레이에 쓰여진 후속 문자는 왼쪽에서 오른쪽으로 이동하지만 이전에 출력 된 텍스트에는 영향을 미치지 않습니다.

  • rightToLeft()
    LCD에 쓰여지는 텍스트의 방향을 오른쪽에서 왼쪽으로 설정하십시오 (기본값은 왼쪽에서 오른쪽입니다).
    즉, 디스플레이에 쓰여진 후속 문자는 오른쪽에서 왼쪽으로 이동하지만 이전에 출력 된 텍스트에는 영향을 미치지 않습니다.

  • createChar()
    사용자 정의 문자를 작성합니다.
    최대 8자, 5x8을 지원합니다.

컨텐츠로 건너뛰기

일반적으로 1602a LCD만 가지고 기기(아두이노, 라즈베리파이등)를 연결하려면 복잡한
케이블 연결이 필요한데 반복적으로 해야할 경우 귀찮은 작업이므로 I2C 제어기를  추가구매하거나 이미 통합된 형태의 LCD를 사용하는게 정신 건강에 유리하다.
1602a LCD는 16 문자 X 2 라인으로 총 32문자의 출력이 가능하다.
특히, backlight 기능을 가지고 있어서 어두운 환경에서 사용하기 좋다.  아래와 같이 점퍼 케이블을 빼면 backlight 기능이 해제된다.

라즈베리파이 lcd 출력 - lajeubelipai lcd chullyeog

먼저 I2C를 사용하기 위해서는 라즈베리파이 설정에서 I2C를 활성화 해야 한다.

sudo raspi-config

라즈베리파이 lcd 출력 - lajeubelipai lcd chullyeog

차례대로 이동해서 I2C를 활성화 하고 리부팅한다.

라즈베리파이 lcd 출력 - lajeubelipai lcd chullyeog

I2C 제어기와 라즈베리파이 GPIO와의 핀연결은 아래 그림을 참고하면 된다.
간단히 설명하면  VCC => 2번 , GND => 6번 , SDA => 3번, SCL => 5번 핀으로 연결하면 된다.

라즈베리파이 lcd 출력 - lajeubelipai lcd chullyeog

이제, 본격적으로 python을 통해 문자 출력하기 위해서는 다음과 같이 I2C 제어 라이브러리를 설치한다.

sudo apt-get install python-smbus

사용한 샘플 예제는 이곳을 참고 하였으며 간단한 테스트후 현재 시간을 표시하도록 코드를 수정하였다.

아래는 최종 구현물이다.

라즈베리파이 lcd 출력 - lajeubelipai lcd chullyeog

글 네비게이션