마이크로 파이썬 배우기 13 – 라이브러리 검색 및 활용

마이크로 파이썬 배우기 13 – 라이브러리 검색 및 활용

1. 라이브러리

라즈베리 파이 피코 보드를 마이크로 파이썬으로 코딩하다 보면, LCD나, OLED Display, 스텝 모터 등과 같은 여러 가지 부수적인 장치들을 연결하여 사용할 경우가 많다.

​

이러한 부수적인 장치들을 마이크로 파이썬으로 제어할 수는 있으나, 이를 위해서는, 명령에 따라 각각의 장치가 동작하도록 해주는 추가적인 프로그램들이 필요하다. 그런데 각각의 사용자가 이를 직접 만들기도 어렵고, 장치마다 전문적 정보가 필요하므로, 그렇게 하기도 거의 불가능하다. 이런 연유로, 이러한 부가 장치들을 생산하거나 유통하는 곳, 또는 전문 개발자들은 이들의 기능을 잘 활용하기 위한 프로그램을 만들어 공급하기도 한다.

​

또한 이처럼 부가장치가 없는 경우라 하더라도, 프로그램을 만들 때 공통적으로 자주 사용되는 여러 가지 유용한 기능들을 함수나 서브루틴 형태로 모듈화시키기도 하는데, 이처럼 유용한 외부 프로그램들을 라이브러리라고 한다.

​

라이브러리의 의미가 도서관이듯이, 기존에 만들어져 있는 라이브러리 들 중에서 자신에게 필요한 것을 찾아서, 자신의 프로그램에 추가해서 사용하면 자신이 원하는 프로그램을 쉽게 만들 수 있고, 여러 가지 부가적인 장치들을 라즈베리파이 피코보드나 아두이노 보드 등에서 쉽게 사용할 수 있게 되는 것이다.

​

예를 들어 다음과 같은 LCD 액정 디스플레이를 피코보드에 연결하여 사용하려면, 이 LCD를 제어하는 세세한 프로그램들이 필요한데, 만일 LCD 라이브러리를 사용하면 자동적으로 이러한 액정 제어 라이브러리가 자신이 만드는 프로그램의 일부가 되는 셈이다.

​

2. 라이브러리를 찾고 적용하는 방법

통상 특별한 주변장치용 라이브러리는 Github등과 같은 opensource 사이트에서 찾는 게 일반적이다.

Github 등에서 연관검색어를 이용하여 찾거나, 인터넷 검색을 통해 링크를 통해 찾는 게 일반적이다.

​

위에 소개한 1602A 액정 장치(I2C 접속방식)를 라즈베리파이 피코보드에 연결하기 위한 라이브러리를 Github에서 찾는 경우를 예로 들면,

​

* 우선 Githunb에 접속한 후

* PICO, LCD, I2C라는 키워드를 이용하여 검색하면 다음과 같은 결과를 얻게 된다.

​

​

대개의 경우 가장 위에 다운로드가 가장 많은 항목이 표시되고, 대체로 이게 자신이 찾는 라이브러리인 경우가 많다.

​

​

해당 항목을 클릭해 들어간 후, 설명문 등을 통해서 자신이 찾는 라이브러리인지를 확인하면 된다.

​

​

​

이렇게 확인한 라이브러리 파일을 실제로 사용하려면, 해당 파일의 내용을 그대로 복사하여 Thonny IDE에 붙여 넣은 후, 동일한 이름으로 자신이 사용하는 환경에 저장하되, 만일 라즈베리파이 피코보드 등에서 사용할 목적이라면 저장 위치를 사용하려는 피코 보드로 지정해 주면 된다.

즉 위의 LCD의 경우 다음 2개의 파일을 그대로 다운로드해서 피코보드에 동일한 이름(lcd_api, py와 pico_i2c_lcd.py)으로 저장해 주면 라이브러리를 사용할 준비가 되는 것이다.

​

https://github.com/T-622/RPI-PICO-I2C-LCD/blob/main/pico_i2c_lcd.py

https://github.com/T-622/RPI-PICO-I2C-LCD/blob/main/lcd_api.py

​

​

그리고, 메인 프로그램에서 해당 라이브러리를 사용한 다는 것을 다음과 같은 방식으로 선언해 주면 된다.

​

​

from lcd_api import LcdApi –> 피코 보드에 저장해둔 Library

from pico_i2c_lcd import I2cLcd –> 피코 보드에 저장해둔 Library

​

이렇게 하면 해당 라이브러리 안에 포함된 다음과 같은 다양한 기능들을 자유롭게 이용할 수 있게 된다.

즉, LCD 액정의 세세한 제어방법을 몰라도 다음의 함수명만 알면 이 액정을 제어할 수 있게 되는 것이다.

lcd.clear()

lcd.show_cursor()

lcd.hide_cursor()

lcd.blink_cursor_on()

lcd.blink_cursor_off()

lcd.display_on()

lcd.display_off()

lcd.backlight_off()

lcd.backlight_on()

lcd.move_to(행번호, 열 번호)

lcd.putchar(“글자”)

lcd.putstr(“문자열”)

​

​

다음은 이처럼 라이브러리 기능을 이용하여 소개한 1602 LCD 액정을 다양하게 제어하는 모습이다.

​