소스 뷰어
import os, gc
from time import sleep
from machine import Pin, I2C, ADC, freq
import ssd1306
import oled_freesans20 as font
from oled_writer import Writer

# OLED 디스플레이 설정
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=400000)
w = width = 128
h = height = 32
oled = ssd1306.SSD1306_I2C(w, h, i2c)

# Writer 객체 초기화
writer = Writer(oled, font, verbose=False)

# 온도 센서 설정
sensor_temp = ADC(4)
conversion_factor = 3.3 / 65535

# Pico 시스템 정보를 OLED에 출력
def display_info(writer, idx=0):
    idx = idx % 4  # 정보 순환 출력
    text = ""

    if idx == 0:  # CPU 클럭
        text = f"CPU {freq()//1_000_000:.0f}Mhz" 
    elif idx == 1:  # 메모리 상태 
        gc.collect()
        free_mem = gc.mem_free()/(gc.mem_free() + gc.mem_alloc())*100
        text = f"Mem : {free_mem:.1f}%"
    elif idx == 2:  # 플래시 스토리지 상태
        statvfs = os.statvfs('/')
        total = statvfs[2] * statvfs[1]  # 전체 크기
        free = statvfs[3] * statvfs[1]   # 사용 가능한 크기
        used_pct = (1 - free / total) * 100
        text = f"Disk : {used_pct:4.1f}%"
    elif idx == 3:  # 온도 
        reading = sensor_temp.read_u16() * conversion_factor
        temperature = 27 - (reading - 0.706) / 0.001721
        text = f"Temp : {temperature:.1f} C"
    pass

    print(f"[{idx}] Text = {text}")

    # OLED에 출력
    oled.fill(0)
    text_width = writer.stringlen(text)
    writer.print(text, x=(w - text_width) // 2, y=(h - writer.font.height()) // 2 + 2) 
    oled.rect(0, 0, w, h, 1)
    oled.show()
pass 

if __name__ == "__main__":
    """시스템 정보 순환 출력."""
    idx = 0
    while True:
        display_info(writer, idx)
        idx += 1
        sleep( 5 )  # 출력 유지 시간
    pass
pass