0
GPI 핀을 통해 포텐셔미터에서 아날로그 판독 값을 보여주는 간단한 그래프를 만들기 위해 Raspberry Pi를 사용하고 있습니다. 필자는 RPi가 아날로그 신호를 읽을 수 없음을 극복 할 수있는 작은 회로를 만들었습니다. 플로팅 자체에는 약간의 문제가 있습니다. 내가 사용하는 코드는 아래와 같습니다.matplotlib plot() not working
# include RPi libraries in to Python code
import RPi.GPIO as GPIO
import time
import matplotlib.pyplot as plt
from drawnow import drawnow
# instantiate GPIO as an object
GPIO.setmode(GPIO.BCM)
# define GPIO pins with variables a_pin and b_pin
a_pin = 18
b_pin = 23
gainF = []
gainString = 0
plt.ion()
x_axis = 0
def makeFig():
plt.ylim(200,210)
plt.xlim(0,100)
plt.title('Readings')
plt.grid(True)
plt.ylabel('Gain')
print(gainString)
print(x_axis)
plt.plot(gainString, x_axis)
plt.show()
#plt.plot(gainString, 'ro-', label='Gain dBm')
# create discharge function for reading capacitor data
def discharge():
GPIO.setup(a_pin, GPIO.IN)
GPIO.setup(b_pin, GPIO.OUT)
GPIO.output(b_pin, False)
time.sleep(0.005)
# create time function for capturing analog count value
def charge_time():
GPIO.setup(b_pin, GPIO.IN)
GPIO.setup(a_pin, GPIO.OUT)
count = 0
GPIO.output(a_pin, True)
while not GPIO.input(b_pin):
count = count +1
return count
# create analog read function for reading charging and discharging data
def analog_read():
discharge()
return charge_time()
# provide a loop to display analog data count value on the screen
while True:
print(analog_read())
gainString = analog_read()
x_axis = x_axis + 1
#dataArray = gainString.split(',')
#gain = float(dataArray[0])
#gainF.append(gain)
makeFig()
plt.pause(.000001)
time.sleep(1)
#GPIO.cleanup()
이 코드는 증가하는 x 축 및 y 축 판독 값을 makeFig() 함수에서 표시하지만 열리는 그래프에는 아무 것도 표시되지 않습니다. 그것은 동일하게 유지됩니다. 코드에서 변경해야 할 사항은 무엇입니까? 감사.
확인이 중 하나를 실행할 수 없습니다,하지만 당신은 가장 최근 읽고 저장하는? 'gainString' (실제로 문자열입니까?)라는 목록을'gainString = []'하고 루프에'read '값을'gainString.append (analog_read())'라고 덧붙입니다. 그러면 x_axis는'x_axis = range (len (gainString))'이 될 수 있습니다. 가능하다면 그 일이 어떻게 진행되고 잘못된 그래프의 스크린 샷을 게시하는지 알려주십시오. –
지시 한대로 코드를 변경했습니다. 아래에 나와 있습니다. 동안 참 ': 인쇄 (analog_read()) #gainString analog_read =() gainString.append (analog_read()) = X_AXIS 범위 (LEN (gainString)) #x_axis X_AXIS = + 1 = #dataArray gainString.split ('') = #gain 플로트 (dataArray [0]) # 의 gainF.append (게인) makeFig() plt.pause (0.000001) time.sleep (1) '이 아래의 배열 출력을 생성했습니다. '90 [195, 189] 범위 (0, 2) [195, 189, 96] 그래도 그래프는 비어 있습니다. –
@KenSyme이 오류는 코드 시작 부분에 표시됩니다. 방법? '아날로그 읽기 180 gainString = [183] X_AXIS = [1] /usr/lib/python3/dist-packages/matplotlib/backend_bases.py:2445 : MatplotlibDeprecationWarning이 특정 기능까지 기본 이벤트 루프를 사용 GUI가 구현되었습니다. warnings.warn (str, mplDeprecation)' –