|
@@ -1,4 +1,8 @@
|
|
|
from smbus2 import SMBus
|
|
|
+import pyqtgraph as pg
|
|
|
+from pyqtgraph.Qt import QtCore, QtGui
|
|
|
+import numpy as np
|
|
|
+import sys
|
|
|
import time
|
|
|
|
|
|
# 定数
|
|
@@ -10,16 +14,39 @@ ADRS2040_CMD_SET_RATE = 3
|
|
|
ADRS2040_CMD_GET_COUNT = 4
|
|
|
ADRS2040_CMD_GET_VALUE = 5
|
|
|
|
|
|
-with SMBus(1) as i2c:
|
|
|
- # 1000Hzにセット
|
|
|
- i2c.write_word_data(ADRS2040_ADDR, ADRS2040_CMD_SET_RATE, 100)
|
|
|
- i2c.write_byte(ADRS2040_ADDR, ADRS2040_CMD_ADC_START)
|
|
|
- while True:
|
|
|
- counter = 0
|
|
|
- counter = i2c.read_word_data(ADRS2040_ADDR,ADRS2040_CMD_GET_COUNT )
|
|
|
- print(counter)
|
|
|
- for i in range(counter):
|
|
|
- value = i2c.read_word_data(ADRS2040_ADDR,ADRS2040_CMD_GET_VALUE)
|
|
|
- print( value )
|
|
|
+class ADCGraph:
|
|
|
+ def __init__(self):
|
|
|
+ self.win = pg.GraphicsWindow()
|
|
|
+ self.win.setWindowTitle('ADC Input')
|
|
|
+ self.plt = self.win.addPlot()
|
|
|
+ self.plt.setYRange(0,1024)
|
|
|
+ self.curve = self.plt.plot(pen=(0, 0, 255))
|
|
|
+
|
|
|
+
|
|
|
+ self.data = np.zeros(100)
|
|
|
+ #
|
|
|
+ # 開始
|
|
|
+ self.i2c = SMBus(1)
|
|
|
+ self.i2c.write_word_data(ADRS2040_ADDR, ADRS2040_CMD_SET_RATE, 50)
|
|
|
+ self.i2c.write_byte(ADRS2040_ADDR, ADRS2040_CMD_ADC_START)
|
|
|
|
|
|
+ self.timer = QtCore.QTimer()
|
|
|
+ self.timer.timeout.connect(self.update)
|
|
|
+ self.timer.start(10)
|
|
|
|
|
|
+
|
|
|
+ def update(self):
|
|
|
+ nod = 0
|
|
|
+ nod = self.i2c.read_word_data(ADRS2040_ADDR,ADRS2040_CMD_GET_COUNT )
|
|
|
+ for i in range(nod):
|
|
|
+ value = self.i2c.read_word_data(ADRS2040_ADDR,ADRS2040_CMD_GET_VALUE)
|
|
|
+ # print(value)
|
|
|
+ self.data = np.delete(self.data, 0)
|
|
|
+ self.data = np.append(self.data, value)
|
|
|
+ self.curve.setData(self.data)
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ graphWin = ADCGraph()
|
|
|
+
|
|
|
+ if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
|
|
|
+ QtGui.QApplication.instance().exec_()
|