Apr-07-2021, 10:29 PM
Hello, im creating a project that is a sensor mat that shows where a user is stepping. I have successfully created the python code for the mat using matplotlib, and now im trying to create a step counter for this program. i plan on unsiong numPy to look at certain region of the matrix and have conditions for it. For example
This is the code i have at the moment, it doesn't compile with the new stuff I added.
if arr[0:7,0:7] > 100: tsteps = +1im just having trouble with this. i can give more details if you need it. Any help is appreciated
This is the code i have at the moment, it doesn't compile with the new stuff I added.
from __future__ import print_function
import serial, os
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
ser = serial.Serial('COM4', 500000)
w, h = 138 , 48;
matrix = np.array([[0 for x in range(w)] for y in range(h)])
tsteps = 0
wrongSteps = 0
def generate_data():
while not ord(ser.read()) == 0:
pass
for y in range(h):
for x in range(w):
readByte = ser.read()
if ord(readByte)==0:
break
else:
matrix[y][x]=ord(readByte)
print('\n'.join([''.join(['{:4}'.format(item) for item in row])
for row in matrix]))
return matrix
def update(data):
mat.set_data(data)
return mat
def data_gen():
while True:
yield generate_data()
def steps():
for arr in data_gen():
if arr[0:7,0:7] > 100:
tsteps = +1
plt.plot(tsteps)
ani = animation.FuncAnimation(fig, steps, interval = 1000)
fig, ax = plt.subplots()
mat = ax.matshow(generate_data(), vmin=0, vmax=120)
ax.autoscale(False)
plt.colorbar(mat)
ani = animation.FuncAnimation(fig, update, data_gen)
def rect(pos):
r = plt.Rectangle(pos, 8,8, facecolor="none", edgecolor="k", linewidth=2)
plt.gca().add_patch(r)
for i in range(0, w, 8):
for j in range(0, h, 8):
rect((i - 0.5, j - 0.5))
matrix[0:7,0:7]
matrix[8:15,:0:7]
matrix[16:23,0:7]
matrix[24:31,0:7]
plt.show()
