Add a simple pygame demo
This allows to see patterns on a desktop without testing on Omnia. However, this will display different color since the color profile for the actual LEDs is not known (to me).demo
parent
1127f86910
commit
2bc55ca5d6
@ -0,0 +1,61 @@
|
|||||||
|
#!/bin/python3
|
||||||
|
|
||||||
|
from omnia import leds
|
||||||
|
import pygame
|
||||||
|
|
||||||
|
# Re-implementation of LED in order to handle it ourself
|
||||||
|
|
||||||
|
class MyLED(leds.LED):
|
||||||
|
def __init__(self, alias, order):
|
||||||
|
self.alias = alias
|
||||||
|
self._state = leds.LedState(
|
||||||
|
r = 0,
|
||||||
|
g = 0,
|
||||||
|
b = 0,
|
||||||
|
brightness = 0,
|
||||||
|
autonomous = False,
|
||||||
|
)
|
||||||
|
self.order = order
|
||||||
|
self.pgled = PGLED(order)
|
||||||
|
@property
|
||||||
|
def state(self):
|
||||||
|
return self._state
|
||||||
|
def set(self, state):
|
||||||
|
self._state = state
|
||||||
|
self.pgled.show(state)
|
||||||
|
|
||||||
|
class PGLED:
|
||||||
|
"""This holds a pygame object to display the LED"""
|
||||||
|
SIZE = 30 # px incl. margins
|
||||||
|
BULB = 6 # px radius
|
||||||
|
def __init__(self, order):
|
||||||
|
self.order = order
|
||||||
|
self.rect = pygame.Rect(self.SIZE * self.order, 0, self.SIZE, self.SIZE)
|
||||||
|
self.surface = None
|
||||||
|
|
||||||
|
def set_surface(self, surf):
|
||||||
|
self.surface = surf
|
||||||
|
|
||||||
|
def show(self, state: leds.LedState):
|
||||||
|
# Fill with black
|
||||||
|
black = pygame.Color(0,0,0)
|
||||||
|
pygame.draw.rect(self.surface, black, self.rect)
|
||||||
|
# Draw the circle with required color
|
||||||
|
# And respect the brightness
|
||||||
|
color = pygame.Color(state.r * state.brightness//255, state.g * state.brightness//255, state.b * state.brightness//255)
|
||||||
|
pygame.draw.circle(self.surface, color, self.rect.center, self.BULB)
|
||||||
|
pygame.display.flip()
|
||||||
|
|
||||||
|
my_strip = leds.LedStrip([MyLED(al, i) for i, al in enumerate(leds.omnia_led_order)])
|
||||||
|
|
||||||
|
w = PGLED.SIZE * len(my_strip)
|
||||||
|
h = PGLED.SIZE
|
||||||
|
|
||||||
|
pygame.init()
|
||||||
|
pygame.mixer.quit()
|
||||||
|
display = pygame.display.set_mode((w, h))
|
||||||
|
display.fill((0,0,0))
|
||||||
|
pygame.display.flip()
|
||||||
|
|
||||||
|
for led in my_strip:
|
||||||
|
led.pgled.set_surface(display)
|
Loading…
Reference in New Issue