Skip to main content

Der Code

Hier ist ein Beispielcode für eure Programmierung in Micropython in der IDE Thonny auf dem Raspberry Pi Pico.

# Bibliotheken laden
#---------------------------------------------------------------------
from machine import Pin, Timer
from neopixel import NeoPixel
from utime import sleep_ms
import time
from random import randint


# Onboard LED vom Raspberry Pi Pico (Blinkt zum testen einer Verdindung)
#---------------------------------------------------------------------
led = Pin(25, Pin.OUT)
timer = Timer()
def blink(timer):
    led.toggle()
timer.init(freq=2.5, mode=Timer.PERIODIC, callback=blink)


# Bewegungssensor
#---------------------------------------------------------------------
# Definiert eine Variable für den PRI-Sensor
# PRI ist eine Abkürzung und bedeutet Pulse Repetition Interval (Deut.: Intervall der Impulsfolge) und bezieht sich auf die Frequenz, mit der ein Bewegungsmelder ein Signal auslöst, wenn dieser eine bestimmte Bewegung erkennt. 
prisensorpin = machine.Pin(28, machine.Pin.IN)


# LEDs
#---------------------------------------------------------------------
# Festlegung der Farben im RGB-Code 
# RGB-Farben könnt ihr unter >> https://html-color.codes/ << erstellen
colors = [
    (24, 0, 0),
    (0, 24, 0),
    (0, 0, 24),
    (12, 12, 0),
    (0, 12, 12),
    (12, 0, 12),
]
# Farben aus colors in eine Liste (Array) schreiben
array = len(colors)
# Pin für WS2812B LED-Streifen festlegen
ledpin = 22
# Anzahl der LEDs des LED-Streifens angeben
ledanzahl = 15
# Geschwindigkeit definieren! Je höher der Wert, des so langsamer die Animation
speed = 120
# Initialisierung des WS2812B LED-Streifens durch die Variable 'ledstreifen'
ledstreifen = NeoPixel(Pin(ledpin, Pin.OUT), ledanzahl)


# Eine eigene Funktion
#---------------------------------------------------------------------
# Wir bauen (definieren) unsere eigene Funktion, um eine Animation zu simulieren. die neue Funktion heißt bei uns rainbow (Deut.: Regenbogen)
def rainbow():
# In der Schleife wird eine bestimmte Anzahlt Anzahl an wiederholungen durchlaufen. Dabei ist die Anzahl der Durchläufe gleich die Anzahl der LED's. Die Variable i erhöht sich mit jeden Durchlauf, bis die Anzahl der LED's (bei uns 15) erreicht ist.
# Hinweis: Eine Iteration ist ein widerholtes Durchlaufen eines bestimmten Prozesses.  
    for i in range (ledanzahl):
# Es wird eine zufällige Farbe aus dem array 'colors' für jedes LED-Element (an der Stelle i) des LED-Streifens erzeugt.
        ledstreifen[i] = colors[randint(0, array-1)]
# sendet die angegebenen LED-Streifen-Daten zu dem LED-Streifen. Dies schaltet die LEDs auf den angegebenen Einstellungen auf dem LED-Streifen ein.
    ledstreifen.write()
# Angabe der Millisekunden, wo der Code eine Pause machen soll. In Micropython gibt die sleep_ms()-Funktion dem Benutzer die Möglichkeit, Wartezeiten von einigen Millisekunden bis zu 255 Sekunden einzustellen.
    sleep_ms(speed)

# Wiederholung (Endlos-Schleife)
#---------------------------------------------------------------------
while True:
# Wenn der Bewegungssensor einen Wert erhält, wie bspw. durch eine Bewegung, soll die
    if prisensorpin.value():
        print("motion detected")
        rainbow()
    else:
       ledstreifen.fill((0,0,0))
       ledstreifen.write()