Commit b0f61ccf3f32ec1b7ae895a0fe45bbbb16b39675
1 parent
caf04a11
Exists in
master
Working demo for plotting a live graph of data recieved over a serial connection!
Showing
3 changed files
with
59 additions
and
10 deletions
Show diff stats
telemetry/code/monitor/pyglet_test.py renamed to telemetry/code/monitor/graph_plotter.py
100644 → 100755
1 | +#!/usr/bin/env python | ||
2 | + | ||
1 | import pyglet | 3 | import pyglet |
2 | import math | 4 | import math |
3 | import random | 5 | import random |
4 | import time | 6 | import time |
7 | +import serial | ||
8 | + | ||
9 | +datafeed = serial.Serial( | ||
10 | + port='/dev/ttyUSB0', | ||
11 | + baudrate = 9600, | ||
12 | + parity=serial.PARITY_NONE, | ||
13 | + stopbits=serial.STOPBITS_ONE, | ||
14 | + bytesize=serial.EIGHTBITS, | ||
15 | + timeout=1 | ||
16 | +) | ||
5 | 17 | ||
6 | window = pyglet.window.Window() | 18 | window = pyglet.window.Window() |
7 | window.set_caption("Test graph") | 19 | window.set_caption("Test graph") |
@@ -36,9 +48,15 @@ def plotline(xdata, ydata): | @@ -36,9 +48,15 @@ def plotline(xdata, ydata): | ||
36 | pyglet.gl.glColor4f(1, 0, 0, 1.0) | 48 | pyglet.gl.glColor4f(1, 0, 0, 1.0) |
37 | points = [] | 49 | points = [] |
38 | for n in range(max(len(xdata), len(ydata))): | 50 | for n in range(max(len(xdata), len(ydata))): |
39 | - xpos = ((xdata[n]-min(xdata))*window.width)/(max(xdata)-min(xdata)) | 51 | + try: |
52 | + xpos = ((xdata[n]-min(xdata))*window.width)/(max(xdata)-min(xdata)) | ||
53 | + except: | ||
54 | + xpos = 0 | ||
40 | xpos = int(xpos) | 55 | xpos = int(xpos) |
41 | - ypos = ((ydata[n]-min(ydata))*window.height)/(max(ydata)-min(ydata)) | 56 | + try: |
57 | + ypos = ((ydata[n]-min(ydata))*window.height)/(max(ydata)-min(ydata)) | ||
58 | + except: | ||
59 | + ypos = 0 | ||
42 | ypos = int(ypos) | 60 | ypos = int(ypos) |
43 | points.append([xpos, ypos]) | 61 | points.append([xpos, ypos]) |
44 | for n in range(len(points)-1): | 62 | for n in range(len(points)-1): |
@@ -52,14 +70,23 @@ ydata = [0] | @@ -52,14 +70,23 @@ ydata = [0] | ||
52 | @window.event | 70 | @window.event |
53 | def on_draw(): | 71 | def on_draw(): |
54 | window.clear() | 72 | window.clear() |
55 | - ydata.append(random.uniform(0, 10)) | ||
56 | - if len(ydata) > 100: | ||
57 | - del ydata[0] | ||
58 | - xdata.append(round(time.time() - starttime, 3)) | ||
59 | - if len(xdata) > 100: | ||
60 | - del xdata[0] | 73 | + #ydata.append(random.uniform(0, 10)) |
74 | + value = datafeed.readline() | ||
75 | + try: | ||
76 | + value = float(value) | ||
77 | + ydata.append(value) | ||
78 | + print("Value: " + str(ydata[-1])) | ||
79 | + | ||
80 | + if len(ydata) > 250: | ||
81 | + del ydata[0] | ||
82 | + xdata.append(round(time.time() - starttime, 3)) | ||
83 | + if len(xdata) > 250: | ||
84 | + del xdata[0] | ||
85 | + except: | ||
86 | + pass | ||
61 | drawgrid(10, 12, [min(xdata), max(xdata)], [min(ydata), max(ydata)]) | 87 | drawgrid(10, 12, [min(xdata), max(xdata)], [min(ydata), max(ydata)]) |
62 | plotline(xdata, ydata) | 88 | plotline(xdata, ydata) |
63 | 89 | ||
90 | + | ||
64 | 91 | ||
65 | pyglet.app.run() | 92 | pyglet.app.run() |
66 | \ No newline at end of file | 93 | \ No newline at end of file |
telemetry/code/robot/analogread_demo/analogread_demo.ino
0 → 100644
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
1 | +/* | ||
2 | + * Read analogue data, send it on | ||
3 | + * | ||
4 | + * A starting point for a robot monitoring system | ||
5 | + * By the UoN Robot Wars project, 2018 | ||
6 | + * This code is under the GPL | ||
7 | + */ | ||
8 | + | ||
9 | +#include <math.h> | ||
10 | + | ||
11 | +void setup() { | ||
12 | + Serial.begin(9600); | ||
13 | + Serial.println("Hello, World"); | ||
14 | + pinMode(13, OUTPUT); | ||
15 | +} | ||
16 | + | ||
17 | +void loop() { | ||
18 | + float avalue = analogRead(A0); | ||
19 | + Serial.println(avalue); | ||
20 | +} |
telemetry/code/robot/fading_led_demo/fading_led_demo.ino
@@ -16,12 +16,14 @@ void setup() { | @@ -16,12 +16,14 @@ void setup() { | ||
16 | 16 | ||
17 | void loop() { | 17 | void loop() { |
18 | // PWM an LED, fading sinusoidally | 18 | // PWM an LED, fading sinusoidally |
19 | - double major_frequency = 0.3; | ||
20 | - double minor_frequency = 100; | 19 | + double major_frequency = 0.5; |
20 | + double minor_frequency = 50; | ||
21 | double duty = 0.5+(0.5*sin(2*PI*major_frequency*millis()/1000)); | 21 | double duty = 0.5+(0.5*sin(2*PI*major_frequency*millis()/1000)); |
22 | Serial.println(duty); | 22 | Serial.println(duty); |
23 | digitalWrite(13, HIGH); | 23 | digitalWrite(13, HIGH); |
24 | delay(1000 * duty/minor_frequency); | 24 | delay(1000 * duty/minor_frequency); |
25 | digitalWrite(13, LOW); | 25 | digitalWrite(13, LOW); |
26 | delay(1000 * (1-duty)/minor_frequency); | 26 | delay(1000 * (1-duty)/minor_frequency); |
27 | + float avalue = analogRead(A0); | ||
28 | + //Serial.println(avalue); | ||
27 | } | 29 | } |