2017-12-22 7 views
0

私はRaspberry Piを使用してGPIOピンを介してポテンショメータからのアナログ測定値を示す簡単なグラフを作成しています。私は、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() 

このコードはmakeFig()関数から増加するx軸とy軸の読み取り値を表示するが、開きグラフは何も表示されません。それは変わらない。コードで変更する必要があるものは何ですか?ありがとう。

+0

後にしているものである場合には、単一のポイントを表示するためのマーカーを使用することが確認するために、このいずれかを実行することはできませんが、あなただけの最新の読み取りを保存していますか? 'gainString'(本当に文字列ですか?)のリストを' gainString = [] 'にして、ループの' gainString.append(analog_read()) 'に読み込み値を追加してください。 x_axisは 'x_axis = range(len(gainString))'になります。できれば間違ったグラフのスクリーンショットを投稿する方法を教えてください。 –

+0

指示通りにコードを変更しました。 '一方TRUE:(analog_read()) #gainString = analog_read() プリントgainString.append(analog_read()) X_AXIS =範囲(LEN(gainString)) #x_axis = X_AXIS + 1 #dataArray = gainString.split( '') #gain =フロート(dataArray [0]) #1 gainF.append(ゲイン) makeFig() plt.pause(0.000001) time.sleep(1) ' それ以下のような配列の出力を作成しました。 '90 [195、189] 範囲(0,2) [195、189、96] グラフはまだ空です。 –

+0

@KenSymeこのエラーはコードの冒頭に表示されていますが、方法? 'アナログリード180 gainString = [183]​​ X_AXIS = [1] /usr/lib/python3/dist-packages/matplotlib/backend_bases.py:2445:MatplotlibDeprecationWarning:これに特定の機能まで、デフォルトのイベント・ループを使用してGUIが実装されている warnings.warn(str、mplDeprecation) ' –

答えて

1

単一の値のラインプロットをプロットしようとしています。行が少なくともラインになることをポイントを必要とするので、これは、表示されません

plt.plot([1],[5]) 

と同じです。

あなたは、これはあなたが

plt.plot([1],[5], marker="o")