首页 > 解决方案 > 我可以在不使用睡眠的情况下每秒感知.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")

在不使用睡眠功能的情况下,每秒感知不同的东西的最简单方法是什么?

标签: pythontimeraspberry-pi

解决方案


推荐阅读