AVR

【라즈베리파이4】 초음파 센서로 그래프 그리기 실습하기

작성자 임베디드코리아 작성일25-12-14 23:47 조회5회 댓글0건
$ Ultrasonic_graph.py
import RPi.GPIO as GPIO
from matplotlib import pyplot as plt
from matplotlib import animation
import numpy as np
import random
import time


GPIO.setmode(GPIO.BCM)
TRIG=13
ECHO=26
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, GPIO.LOW)

def distance_check() :
  GPIO.output(TRIG, GPIO.HIGH)
  time.sleep(0.001)
  GPIO.output(TRIG, GPIO.LOW) 
  stop=0
  start=0

  while GPIO.input(ECHO)== GPIO.LOW :
      start=time.time()                                 
  while GPIO.input(ECHO)== GPIO.HIGH :

      stop=time.time()                               
  duration=stop-start
  distance=(duration*340*100)/2
  return distance
 
fig = plt.figure()
ax = plt.axes(xlim=(0, 50), ylim=(4, 13))
line, = ax.plot([], [], lw=1, c='blue', marker='d',ms=2)
max_points = 50
line, = ax.plot(np.arange(max_points),
                np.ones(max_points, dtype=np.float64)*np.nan, lw=1, c='blue',marker='d',ms=2)

def init():
    return line

def animate(i):

    y = distance_check()   
    old_y = line.get_ydata()
    new_y = np.r_[old_y[1:], y]
    line.set_ydata(new_y)
    print(new_y)
    return line,
   
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=20, blit=False)
plt.show()