snake_computer/07_zufall.py

66 lines
1.5 KiB
Python
Raw Permalink Normal View History

2025-05-25 10:52:31 +02:00
import neopixel
from machine import Pin
import time
from random import randint, random, seed
seed()
ws_pin = 0
led_zahl = 64
helligkeit = 0.05
matrix = neopixel.NeoPixel(Pin(ws_pin), led_zahl)
taster_hoch = Pin(1, Pin.IN, Pin.PULL_UP)
taster_runter = Pin(2, Pin.IN, Pin.PULL_UP)
taster_rechts = Pin(3, Pin.IN, Pin.PULL_UP)
taster_links = Pin(4, Pin.IN, Pin.PULL_UP)
scalar = float # a scale value (0.0 to 1.0)
def hsv2rgb(h:scalar, s:scalar, v:scalar) -> tuple:
if s:
if h == 1.0: h = 0.0
i = int(h*6.0); f = h*6.0 - i
w = int(255*( v * (1.0 - s) ))
q = int(255*( v * (1.0 - s * f) ))
t = int(255*( v * (1.0 - s * (1.0 - f)) ))
v = int(255*v)
if i==0: return (v, t, w)
if i==1: return (q, v, w)
if i==2: return (w, v, t)
if i==3: return (w, q, v)
if i==4: return (t, w, v)
if i==5: return (v, w, q)
else: v = int(255*v); return (v, v, v)
def zufall_farbe():
return hsv2rgb(random(), 1.0, 1.0)
def setze_helligkeit(farbe):
r, g, b = farbe
r = int(r * helligkeit)
g = int(g * helligkeit)
b = int(b * helligkeit)
return (r, g, b)
def setze_pixel(x, y, farbe):
farbe = setze_helligkeit(farbe)
i = y * 8 + x
matrix[i] = farbe
def neue_position():
x = randint(0, 7)
y = randint(0, 7)
return (x, y)
while True:
matrix.fill((0, 0, 0))
(x, y) = neue_position()
setze_pixel(x, y, zufall_farbe())
matrix.write()
time.sleep(0.5)