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_msADC
import time

from# randomPins importfür randintdie LEDs
led_red = Pin(15, Pin.OUT)
led_yellow = Pin(14, Pin.OUT)
led_green = Pin(13, Pin.OUT)

# OnboardADC-Pin LEDfür vomden Raspberry Pi Pico (Blinkt zum testen einer Verdindung)Bodenfeuchtigkeitssensor
#---------------------------------------------------------------------
ledsoil_sensor = Pin(25, Pin.OUT)
timer = Timer()
def blink(timer):
    led.toggle()
timer.init(freq=2.5, mode=Timer.PERIODIC, callback=blink)ADC(26)

# BewegungssensorSchwellenwerte für Feuchtigkeit
#---------------------------------------------------------------------
#DRY_THRESHOLD Definiert= eine Variable für den PRI-Sensor30000    # PRIUnter diesem Wert wird es als trocken betrachtet
MOIST_THRESHOLD = 60000  # Ober diesem Wert wird es als feucht betrachtet

def read_soil_moisture():
    # Bodenfeuchtigkeit auslesen
    return soil_sensor.read_u16()

while True:
    moisture_level = read_soil_moisture()

# Boden ist einetrocken, Abkürzungrote undLED 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)


# LEDsleuchtet
#---------------------------------------------------------------------
    #if Festlegungmoisture_level der< FarbenDRY_THRESHOLD:
        imled_red.value(1)
        RGB-Codeled_yellow.value(0)
        led_green.value(0)
# RGB-FarbenBoden könnthat ihrwenig unterFeuchtigkeit, >>gelbe https://html-color.codes/LED << 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 Funktionleuchtet
#---------------------------------------------------------------------
    #elif Wirmoisture_level bauen< (definieren)MOIST_THRESHOLD:
        unsereled_red.value(0)
        eigeneled_yellow.value(1)
        Funktion, um eine Animation zu simulieren. die neue Funktion heißt bei uns rainbow (Deut.: Regenbogen)
def rainbow():led_green.value(0)
# In der Schleife wird eine bestimmte Anzahlt Anzahl an wiederholungen durchlaufen. DabeiBoden ist diefeucht Anzahlgenug, dergrüne DurchläufeLED 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)leuchtet
#---------------------------------------------------------------------
    whileelse:
        True:led_red.value(0)
        led_yellow.value(0)
        led_green.value(1)
    
# WennWarte eine Sekunde bevor der Bewegungssensor einennächste Wert erhält,gemessen wiewird
bspw.#---------------------------------------------------------------------
    durch eine Bewegung, soll die
    if prisensorpin.value():
        print("motion detected")
        rainbow()
    else:
       ledstreifen.fill((0,0,0))
       ledstreifen.write()time.sleep(1)