raspberrypi/pico rp2040

RP2040으로 SSD1306 OLED 출력해보기

progate 2024. 11. 3. 15:18

 

1. Adafruit 라이브러리 설치.

보드에 설치한 Circuitpython 버전에 맞는 라이브러리를 다운로드 받는다.

나는 현재 9.2.0 버전을 설치했기 때문에 내가 내려받은 파일은 adafruit-circuitpython-bundle-9.x-mpy-20241103.zip이다.

그 아래 Source Bundle를 내려받아 설치하는 것은 나중에 해볼 생각이며,

Example Bundle도 내려받아 예제를 공부해도 좋을거같다.

https://circuitpython.org/libraries

 

CircuitPython - Libraries

The easiest way to program microcontrollers

circuitpython.org

 

2. 회로 구성.

3. 프로그램 작성.

이 프로그램을 실행하려면 font5x8.bin 파일이 필요하다.

https://github.com/adafruit/Adafruit_CircuitPython_framebuf/blob/main/examples/font5x8.bin

 

Adafruit_CircuitPython_framebuf/examples/font5x8.bin at main · adafruit/Adafruit_CircuitPython_framebuf

CircuitPython framebuf module, based on the Python framebuf module - adafruit/Adafruit_CircuitPython_framebuf

github.com

이 파일을 내려받아 CircuitPython 장치에 복사해 넣는다.

import board
import busio
import displayio
import adafruit_displayio_ssd1306
from adafruit_display_text import label
import terminalio
import time

WIDTH = 128
HEIGHT = 64

# SCL(SCK)과 SDA가 연결된 보드의 GP1과 GP0 핀 번호 설정
i2c = busio.I2C(scl=board.GP1, sda=board.GP0)
display_bus = displayio.I2CDisplay(
    i2c,
    device_address=0x3C,
)
display = adafruit_displayio_ssd1306.SSD1306(display_bus, width=WIDTH, height=HEIGHT)

# Make the display context
splash = displayio.Group()
display.root_group = splash

color_bitmap = displayio.Bitmap(display.width, display.height, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0x000000

bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
splash.append(bg_sprite)

# Draw a smaller inner rectangle
inner_bitmap = displayio.Bitmap(
    display.width - BORDER * 2, display.height - BORDER * 2, 1
)

inner_palette = displayio.Palette(1)
inner_palette[0] = 0xFFFFFF
inner_sprite = displayio.TileGrid(
    inner_bitmap, pixel_shader=inner_palette, x=BORDER, y=BORDER
)
splash.append(inner_sprite)

# Draw a label
text = "Hello PROGATE!"
text_area = label.Label(terminalio.FONT, text=text, color=0x000000)
text_width = text_area.bounding_box[2] * FONTSCALE
text_group = displayio.Group(
    scale=FONTSCALE,
    x=display.width // 2 - text_width // 2,
    y=display.height // 2,
)
text_group.append(text_area)  # Subgroup for text scaling
splash.append(text_group)

time.sleep(1)

displayio.release_displays()

4. 테스트

최종 결과

 

'raspberrypi > pico rp2040' 카테고리의 다른 글

CircuitPython을 위한 editor 설치하기(thonny)  (0) 2024.11.03
CircuitPython 설치  (1) 2024.11.02
RP2040 16M  (0) 2024.11.02