I'm python noob so please go easy on me.I have a Raspberry Pi 4 and Sensehat on top of it. I'm making an interesting project with it that involves cycling and safety. The gyro on the Sensehat senses the direction I'm turning/leaning and shows an arrow animation on the Sensehat's 8x8 matrix leds towards that direction so that drivers can see it.
As you can see everything is wrapped inside a while True Loop and i added some if statements inside while true. When x and y and z are between such values, show this animation...
The direction sensing works great, animation also loops but I faced one small hiccup: Everytime a loop completes the animation lags half a second or so. I can also see the lag when I'm printing the gyro's x,y,z output. I mean when animation is displayed on the LEDs, the output of x,y,z lags.
Please watch this short video that demonstrates the issue in action as it's a bit hard to describe: https://youtu.be/Iou20WMxCOo
As you can see in the video, the arrow animation is not flowing smoothly. It stops for a short while after each loop.
I can kinda tell what's going on. When the conditions of if statements are met, the following code which is the arrow animation, is running but I thought Python would also keep running the rest of the code in that while True loop, which doesn't seem to be the case.
So do I need a seperate, dedicated while true to loop for animation? Is there even such a thing?
Here's my code:
from sense_hat import SenseHat
import time
sense = SenseHat()
g = (0, 255, 0) # Green
b = (0, 0, 0) # Black
while True:
x, y, z = sense.get_accelerometer_raw().values()
x = round(x, 2)
y = round(y, 2)
z = round(z, 2)
print("x=%s, y=%s, z=%s" % (x, y, z))
time.sleep(0.1)
if (x > 0.17) and (z < 0.15) and (z > -0.05) and (y > 0.90):
sense.set_rotation(180)
anim1 = [
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, g, g, g, g,
b, b, b, b, g, g, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, b, g
]
sense.set_pixels(anim1)
time.sleep(0.05)
anim2 = [
b, b, b, b, b, b, g, b,
b, b, b, b, b, g, g, b,
b, b, b, b, g, g, g, b,
b, b, b, g, g, g, g, b,
b, b, b, g, g, g, g, b,
b, b, b, b, g, g, g, b,
b, b, b, b, b, g, g, b,
b, b, b, b, b, b, g, b
]
sense.set_pixels(anim2)
time.sleep(0.05)
anim3 = [
b, b, b, b, b, g, b, b,
b, b, b, b, g, g, b, b,
b, b, b, g, g, g, b, b,
b, b, g, g, g, g, b, b,
b, b, g, g, g, g, b, b,
b, b, b, g, g, g, b, b,
b, b, b, b, g, g, b, b,
b, b, b, b, b, g, b, b
]
sense.set_pixels(anim3)
time.sleep(0.05)
anim4 = [
b, b, b, b, g, b, b, b,
b, b, b, g, g, b, b, b,
b, b, g, g, g, b, b, b,
b, g, g, g, g, b, b, b,
b, g, g, g, g, b, b, b,
b, b, g, g, g, b, b, b,
b, b, b, g, g, b, b, b,
b, b, b, b, g, b, b, b
]
sense.set_pixels(anim4)
time.sleep(0.05)
anim5 = [
b, b, b, g, b, b, b, b,
b, b, g, g, b, b, b, b,
b, g, g, g, b, b, b, b,
g, g, g, g, b, b, b, b,
g, g, g, g, b, b, b, b,
b, g, g, g, b, b, b, b,
b, b, g, g, b, b, b, b,
b, b, b, g, b, b, b, b
]
sense.set_pixels(anim5)
time.sleep(0.05)
anim6 = [
b, b, g, b, b, b, b, b,
b, g, g, b, b, b, b, b,
g, g, g, b, b, b, b, b,
g, g, g, b, b, b, b, b,
g, g, g, b, b, b, b, b,
g, g, g, b, b, b, b, b,
b, g, g, b, b, b, b, b,
b, b, g, b, b, b, b, b
]
sense.set_pixels(anim6)
time.sleep(0.05)
anim7 = [
b, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
b, g, b, b, b, b, b, b
]
sense.set_pixels(anim7)
time.sleep(0.05)
anim8 = [
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b
]
sense.set_pixels(anim8)
time.sleep(0.05)
anim9 = [
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b
]
sense.set_pixels(anim9)
time.sleep(0.05)
anim10 = [
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b
]
sense.set_pixels(anim10)
time.sleep(0.05)
anim11 = [
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, b
]
sense.set_pixels(anim11)
time.sleep(0.05)
anim12 = [
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, b
]
sense.set_pixels(anim12)
time.sleep(0.05)
elif x < -0.17 and (z < 0.15) and (z > -0.05) and (y > 0.90):
sense.set_rotation(0)
anim1 = [
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, g, g, g, g,
b, b, b, b, g, g, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, b, g
]
sense.set_pixels(anim1)
time.sleep(0.05)
anim2 = [
b, b, b, b, b, b, g, b,
b, b, b, b, b, g, g, b,
b, b, b, b, g, g, g, b,
b, b, b, g, g, g, g, b,
b, b, b, g, g, g, g, b,
b, b, b, b, g, g, g, b,
b, b, b, b, b, g, g, b,
b, b, b, b, b, b, g, b
]
sense.set_pixels(anim2)
time.sleep(0.05)
anim3 = [
b, b, b, b, b, g, b, b,
b, b, b, b, g, g, b, b,
b, b, b, g, g, g, b, b,
b, b, g, g, g, g, b, b,
b, b, g, g, g, g, b, b,
b, b, b, g, g, g, b, b,
b, b, b, b, g, g, b, b,
b, b, b, b, b, g, b, b
]
sense.set_pixels(anim3)
time.sleep(0.05)
anim4 = [
b, b, b, b, g, b, b, b,
b, b, b, g, g, b, b, b,
b, b, g, g, g, b, b, b,
b, g, g, g, g, b, b, b,
b, g, g, g, g, b, b, b,
b, b, g, g, g, b, b, b,
b, b, b, g, g, b, b, b,
b, b, b, b, g, b, b, b
]
sense.set_pixels(anim4)
time.sleep(0.05)
anim5 = [
b, b, b, g, b, b, b, b,
b, b, g, g, b, b, b, b,
b, g, g, g, b, b, b, b,
g, g, g, g, b, b, b, b,
g, g, g, g, b, b, b, b,
b, g, g, g, b, b, b, b,
b, b, g, g, b, b, b, b,
b, b, b, g, b, b, b, b
]
sense.set_pixels(anim5)
time.sleep(0.05)
anim6 = [
b, b, g, b, b, b, b, b,
b, g, g, b, b, b, b, b,
g, g, g, b, b, b, b, b,
g, g, g, b, b, b, b, b,
g, g, g, b, b, b, b, b,
g, g, g, b, b, b, b, b,
b, g, g, b, b, b, b, b,
b, b, g, b, b, b, b, b
]
sense.set_pixels(anim6)
time.sleep(0.05)
anim7 = [
b, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
g, g, b, b, b, b, b, b,
b, g, b, b, b, b, b, b
]
sense.set_pixels(anim7)
time.sleep(0.05)
anim8 = [
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b,
g, b, b, b, b, b, b, b
]
sense.set_pixels(anim8)
time.sleep(0.05)
anim9 = [
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b
]
sense.set_pixels(anim9)
time.sleep(0.05)
anim10 = [
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, b
]
sense.set_pixels(anim10)
time.sleep(0.05)
anim11 = [
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, b
]
sense.set_pixels(anim11)
time.sleep(0.05)
anim12 = [
b, b, b, b, b, b, b, b,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, g, g, g,
b, b, b, b, b, b, g, g,
b, b, b, b, b, b, b, g,
b, b, b, b, b, b, b, b
]
sense.set_pixels(anim12)
time.sleep(0.05)
else:
sense.clear()
Aucun commentaire:
Enregistrer un commentaire