프로그래밍/Python

[Python] 라즈베리파이 LCD I2C 통신

Beginner:) 2022. 1. 7.
320x100

LCD에 rs, en d1~d6까지 직접연결하면 Adafruit의 라이브러리로도 사용이 가능하다.

 

일단 Adafruit의 라이브러리에는 i2c 용 라이브러리가 함께 존재한다.

 

그러나 무슨이유에서인지 작동하지 않는다. 

 

소스코드를 까보면 슬레이브 주소자체가 다른거같기도한데... 정확한 이유를 모르겠다.

 

어쨋건  Adafruit 회사인 경우 I2C 보드가 따로 필요한거 같고 

 

아두이노에서 사용하던 LCD 라이브러리는 아두이노 용이니 ... 파이썬 라이브러리가 필요하다.

 

라이브러리는 두개를 찾았다.

 

하나는 엘레파츠, 하나는 라즈베리파이가이에서 제공한다.

 

엘레파츠 라이브러리 깃허브

https://github.com/eleparts/RPi_I2C_LCD_driver

 

라즈베리파이가이 깃허브

https://github.com/the-raspberry-pi-guy/lcd

 

둘이 생긴게 비슷하긴하다.

 

LCD주소는 0x27, I2C 포트번호는 1이다.

 

포트번호를 바꾸고 싶으면

 

엘레파츠 깃헙에는 드라이브에 포트번호를 바꾸면되고

 

라즈베리파이 가이 깃헙에는 드라이브에 버스넘버를 바꾸면된다.

 

둘이 비슷비슷하게 생겨서 뭐 ... 뭘쓰던 상관없을 것 같다.

 

나는 엘레파츠 라이브러리를 사용했다.

 


먼저 I2C 통신을 위한 라이브러리 설치

sudo apt-get install python3-smbus

 

엘레파츠 깃 클론

git clone https://github.com/eleparts/RPi_I2C_LCD_driver.git

 

* 설치라이브러리, 함수설명과 같은 정보는 해당 사이트에 직접 접속하여 확인 !

https://github.com/eleparts/RPi_I2C_LCD_driver

 

반응형

 

No module smbus 에러코드 발생시 

pip3 install smbus

 

 

I2C 연결확인 - 보통 1번 포트일 것이다

i2cdetect -y 1

0x27번에 27 숫자가 찍히면 LCD와 통신이 가능하다.

 

소스코드

from RPi_I2C_LCD_driver import RPi_I2C_driver
lcd = RPi_I2C_driver.lcd(0x27)
lcd.clear()
lcd.setCursor(0,0)
lcd.print("Hello")
lcd.setCursor(0,1)
lcd.print("World")

 

 

I2C 0번 포트 개방방법은 아래 글에

2021.06.29 - [분류 전체보기] - 라즈베리파이 i2c(SCL.0, SDA.0) 사용하기

 

라즈베리파이 i2c(SCL.0, SDA.0) 사용하기

테스트 환경은 라즈베리파이 B, 라즈비안 데스크톱 버스터이다. 아래는 라즈베리파이 핀 정보이며 회로도는 첨부하였다. gpio readall 물리적 핀번호 3, 5번이 기본적으로 설정되어있는 i2c 핀번호이

park-duck.tistory.com

 

 

 

반응형

댓글