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)