![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| PIC và Robot trên nền Ubuntu Đây là một chủ trương mới mà chúng ta cần chú ý. |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#2 |
|
Đệ tử 1 túi
Tham gia ngày: Dec 2005
Bài gửi: 12
: |
5. Để giao tiếp với cổng com, có thể dùng cutecom, hoặc chính bản thân terminal. Nếu dùng cutecom thì cũng tương tự với các chương trình khác. Ví dụ với terminal thôi:
Code:
#Thiết lập com /dev/ttyUSB0 với baudrate cần thiết, stty -F /dev/ttyUSB0 speed 115200 raw #raw tức là hiển thị tất cả, không dấu thứ gì #Dùng lệnh cat để đưa chuỗi nhận được ra stdout (tức là màn hình terminal) cat /dev/ttyUSB0 #Nếu muốn có thể cho chuỗi này vào một file định sẵn cat /dev/ttyUSB0 > filename.txt Code python: Code:
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import serial
import numpy as np
ser=serial.Serial('/dev/ttyUSB1',115200)
win=pg.GraphicsWindow()
win.setWindowTitle('DC motor speed display using PyQtGraph')
p1=win.addPlot()
p2=win.addPlot()
data1=[]
curve1=p1.plot(data1,pen=(255,255,0),name='Speed (RPM)')
curve2=p2.plot(data1,pen=(0,255,255))
ptr1=0
def update():
global data1, curve1, ptr1
speed=float(ser.readline())
data1.append(speed)
ptr1+=1
curve1.setData(data1)
curve2.setData(data1)
curve2.setPos(ptr1,0)
if ptr1>50:
del data1[0]
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_()
Đây là đồ thị thời gian thực, đáp ứng rất nhanh theo thực tế ở mạch điều khiển. Code python trên nếu chiu khó tinh chỉnh sẽ cho ra đồ thị đẹp và chuyên nghiệp hơn. Nếu muốn đẹp hơn nữa thì matplotlib, nhưng matplotlib khá chậm, không đáp ứng được yêu cầu thời gian thực. ![]() |
|
|
|
|
|