소스 뷰어
from gpiozero import DistanceSensor  # gpiozero 라이브러리에서 DistanceSensor 클래스를 가져옵니다.
from time import sleep  # 시간 지연을 위해 time 모듈에서 sleep 함수를 가져옵니다.
import matplotlib.pyplot as plt  # 실시간 그래프를 그리기 위해 matplotlib의 pyplot을 가져옵니다.
from matplotlib.animation import FuncAnimation  # 실시간 애니메이션을 만들기 위해 FuncAnimation을 가져옵니다.

# 초음파 거리 센서를 초기화합니다.
distanceSensor = DistanceSensor(echo=17, trigger=4)

# 그래프 초기 설정
fig, ax = plt.subplots()
plt.grid(1, linestyle='--', color="g")
x_data, y_data = [], []
line, = ax.plot(x_data, y_data)
# x축과 y축에 라벨 추가
ax.set_xlabel('Time (100 ms)')  # x축 설명을 설정
ax.set_ylabel('Distance (cm)')  # y축 설명을 설정

def update(frame):
    global x_data, y_data

    x_data.append(frame)  # 현재 시간을 x 축 데이터로 사용합니다.
    y_data.append(distanceSensor.distance*100)  # 센서의 측정 거리(cm)를 y 축 데이터로 사용합니다.

    while len( x_data ) > 50 : # 데이터 개수를 50개 이하로 유지
        x_data.pop( 0 )
        y_data.pop( 0 )
    pass

    line.set_data(x_data, y_data)
    ax.set_xlim(max(0, frame - 50), frame + 10)  # x 축을 실시간으로 업데이트합니다.
    ax.set_ylim(0, max(40, max(y_data) + 5 ) )  # y 축 범위를 설정합니다. (센서의 최대 범위에 따라 조정)

    return line,

# 애니메이션 설정
ani = FuncAnimation(fig, update, interval=100)  # 100ms 간격으로 업데이트

plt.show()  # 그래프를 화면에 표시합니다.