3

私はPython言語とコーディングが初めてです。

USBシリアルを使用して、Arduino UNOボードからライブ信号を取得して区別しようとしています。今のところ問題なくデータを取得できていますが、どうやって区別するかという情報は得られません。

それについて私を助けてくれませんか、それとも、このことに関する情報をどこで入手できるか教えてくれませんか?

よろしくお願いします。

これが私のコードです

Obs .: 私は初心者です :D

# -*- coding: utf-8 -*-

from collections import deque
import serial
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
arduinoData = serial.Serial('COM4', 4800)

win = pg.GraphicsWindow()
win.setWindowTitle('pyqtgraph example: Scrolling Plots')

#    In these examples, the array size is fixed.
p1 = win.addPlot()
p2 = win.addPlot()

data1= [0,0]
vector=deque()

for i in range(300):

    string = arduinoData.readline()
    stringx = string.split(',')

    time=float(stringx[0])
    distance=float(stringx[1])
    vector=(time, distance) 
    vectorx = np.array(vector)
    data1=np.vstack((data1,vectorx))   

curve1 = p1.plot(data1)
curve2 = p2.plot(data1)
ptr1 = 0



def update1():
    global data1, curve1, ptr1

    data1[:-1] = data1[1:]  

    string = arduinoData.readline()

    stringx = string.split(',')
    time=float(stringx[0])
    distance=float(stringx[1])
    vector=(time, distance)
    vectorx=np.array(vector)
    data1[-1]=vectorx
    #print(data1)

    curve1.setData(data1)

    ptr1 += 1
    curve2.setData(data1)
    curve2.setPos(ptr1, 0)

# update all plots
def update():
    update1()

timer = pg.QtCore.QTimer()
timer.timeout.connect(update)
timer.start(50)



## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()
4

2 に答える 2

2

「信号を区別する」は、英語ではめったに使用されない表現です (ただし、Google によると正しいようです)。それがあなたと@zvoneが誤解した理由です。信号の「導関数を取りたい」と言った方が良いでしょう。

とにかく、numpy.gradient関数はこれを行うことができます。

于 2016-10-30T09:27:12.830 に答える