Skip to content

Instantly share code, notes, and snippets.

@turbinenreiter
Created December 10, 2013 20:43
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save turbinenreiter/7898985 to your computer and use it in GitHub Desktop.
Save turbinenreiter/7898985 to your computer and use it in GitHub Desktop.
Code to read data from the serial port and plot it.
#!/usr/bin/python
# -*- coding: utf-8 -*-
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
from pyqtgraph.ptime import time
import serial
app = QtGui.QApplication([])
p = pg.plot()
p.setWindowTitle('live plot from serial')
curve = p.plot()
data = [0]
raw=serial.Serial("/dev/ttyACM0",9600)
raw.open()
def update():
global curve, data
line = raw.readline()
data.append(int(line))
xdata = np.array(data, dtype='float64')
curve.setData(xdata)
app.processEvents()
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(0)
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
@cyberdine
Copy link

Thanks for sharing. Just a question: why do you import 'time' from 'pyqtgraph.ptime' ?

@ocuflo
Copy link

ocuflo commented Mar 8, 2015

Think you could help me "pop" the data so the segment in the window scrolls past a fixed time segment instead of continuously appending? I'm able to get past a couple of other obstacles but this one I don't have a clue on. It works fantastically other than this, same with several examples from pyqtgraph BUT I can't seem to get how to control the x axis to show a fixed segment of time....

@srikarpv
Copy link

Hi,
I am new to Arduino. i currently have an MPU-6050 sensor which gives me accel and gyro values on the serial monitor from the Arduino IDE.
i want to log this data and store it in a csv file. Any leads as to how i can achieve this?

@turbinenreiter
Copy link
Author

@srikarpv

If you are on linux, you can use picocom to read the serial data and pipe it into a file.

i.e.:
picocom /dev/ttyACM0 > log.csv

Hit ctrl-c if you want to stop logging. You can use tee to see and log the stream at the same time.

If you want to do it in python, you just have to take the above code and write the variable line to a file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment