python - 我可以在不使用睡眠的情况下每秒感知.set_pixels 吗?
问题描述
我目前正在使用 Raspberry Pi 进行 Java 项目 - 我只编写了几个月的代码,我仍在学习。
我正在制作一个将运行九秒的动画。我有九帧,我希望每帧显示一秒钟。最初我使用了sleep功能,但最终我需要将此代码添加到一个更大的项目中,并且无法使用sleep。
from sense_hat import SenseHat
from time import sleep
sense = SenseHat()
#colours
r = (255, 0, 0)
o = (255,165,0)
y = (255, 216, 1)
g = (21, 119, 40)
b = (0, 70, 255)
p = (100, 50, 200)
e = (0, 0, 0,)
w = (255, 255, 255)
u = (101, 67, 33) #brown
#frames for animations
egg1 = [
g,g,g,g,g,g,g,g,
e,e,e,e,p,p,e,e,
e,e,e,p,y,w,p,e,
e,e,p,y,w,w,y,p,
e,e,p,y,w,y,w,p,
e,e,e,p,w,y,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
egg2 = [
r,g,g,g,g,g,g,g,
e,e,e,e,p,p,e,e,
e,e,e,p,y,w,p,e,
e,e,p,y,w,w,y,p,
e,e,p,y,w,y,w,p,
e,e,e,p,w,y,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
egg3 = [
r,r,g,g,g,g,g,g,
e,e,e,e,p,p,e,e,
e,e,e,p,y,w,p,e,
e,e,p,y,w,w,y,p,
e,e,p,y,w,y,w,p,
e,e,e,p,w,y,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
egg4 = [
r,r,r,g,g,g,g,g,
e,e,e,e,p,p,e,e,
e,e,e,p,o,y,p,e,
e,e,p,o,y,y,o,p,
e,e,p,o,y,o,o,p,
e,e,e,p,y,o,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
egg5 = [
r,r,r,r,g,g,g,g,
e,e,e,e,p,p,e,e,
e,e,e,p,o,y,p,e,
e,e,p,o,y,y,o,p,
e,e,p,o,y,o,o,p,
e,e,e,p,y,o,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
egg6 = [
r,r,r,r,r,g,g,g,
e,e,e,e,p,p,e,e,
e,e,e,p,o,y,p,e,
e,e,p,o,y,y,o,p,
e,e,p,o,y,o,o,p,
e,e,e,p,y,o,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
egg7 = [
r,r,r,r,r,r,g,g,
e,e,e,e,p,p,e,e,
e,e,e,p,u,o,p,e,
e,e,p,u,o,o,u,p,
e,e,p,u,o,u,o,p,
e,e,e,p,o,u,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
egg8 = [
r,r,r,r,r,r,r,g,
e,e,e,e,p,p,e,e,
e,e,e,p,u,o,p,e,
e,e,p,u,o,o,u,p,
e,e,p,u,o,u,o,p,
e,e,e,p,o,u,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
egg9 = [
r,r,r,r,r,r,r,r,
e,e,e,e,p,p,e,e,
e,e,e,p,u,o,p,e,
e,e,p,u,o,o,u,p,
e,e,p,u,o,u,o,p,
e,e,e,p,o,u,p,e,
e,e,p,e,p,p,e,e,
e,p,e,e,e,e,e,e,
]
while True:
for event in sense.stick.get_events():
#check if pressed
if event.action == "pressed":
#check direction
if event.direction == "up":
sense.set_pixels(egg1)
sleep(1)
sense.set_pixels(egg2)
sleep(1)
sense.set_pixels(egg3)
sleep(1)
sense.set_pixels(egg4)
sleep(1)
sense.set_pixels(egg5)
sleep(1)
sense.set_pixels(egg6)
sleep(1)
sense.set_pixels(egg7)
sleep(1)
sense.set_pixels(egg8)
sleep(1)
sense.set_pixels(egg9)
sleep(1)
我尝试使用时间,但由于某种原因,它会同时打印两条测试消息,而不是在每条消息之间等待一秒钟。
import time
t0 = time.time()
print("test")
if t0 > 1:
print ("test1")
我也试过这个:
import time
oldtime = import sleep
while True:
if time.time() - oldtime > 1:
print("1")
if time.time() - oldtime > 2:
print("2")
if time.time() - oldtime > 3:
print("3")
在不使用睡眠功能的情况下,每秒感知不同的东西的最简单方法是什么?
解决方案
推荐阅读
- angularjs - 在 AngularJS 项目中使用 Vue3 组件/路由
- flutter - 如何在自定义小部件构造函数中添加和使用键
- java - setOnClickListener onTouchEvent
- vue.js - 如何使用 jest 捕获和测试 Vue.js 组件中方法的错误
- google-apps-script - 以编程方式向多个表单添加表单触发器 AppsScript
- primefaces - 尝试重现自动完成标记时,JMeter 生成服务器错误
- amazon-web-services - AWS Glue 作业运行不遵守超时且不停止
- google-api - google-cloud-php 文档 AI:INVALID_ARGUMENT
- carla - carla 的 client.getworld() 命令没有运行
- flutter - 如何在饱和度范围内绘制不同的色调