Add initial project files and implement LED control via UART commands
This commit is contained in:
3
.micropico
Normal file
3
.micropico
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"info": "This file is just used to identify a project folder."
|
||||||
|
}
|
||||||
8
.vscode/extensions.json
vendored
Normal file
8
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"ms-python.python",
|
||||||
|
"visualstudioexptteam.vscodeintellicode",
|
||||||
|
"ms-python.vscode-pylance",
|
||||||
|
"paulober.pico-w-go"
|
||||||
|
]
|
||||||
|
}
|
||||||
15
.vscode/settings.json
vendored
Normal file
15
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"python.languageServer": "Pylance",
|
||||||
|
"python.analysis.typeCheckingMode": "basic",
|
||||||
|
"python.analysis.diagnosticSeverityOverrides": {
|
||||||
|
"reportMissingModuleSource": "none"
|
||||||
|
},
|
||||||
|
"python.terminal.activateEnvironment": false,
|
||||||
|
"micropico.openOnStart": true,
|
||||||
|
"python.analysis.typeshedPaths": [
|
||||||
|
"~/.micropico-stubs/included"
|
||||||
|
],
|
||||||
|
"python.analysis.extraPaths": [
|
||||||
|
"~/.micropico-stubs/included"
|
||||||
|
]
|
||||||
|
}
|
||||||
9
blink.py
Normal file
9
blink.py
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
from machine import Pin
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
led = Pin('LED', Pin.OUT)
|
||||||
|
print('Blinking LED Example')
|
||||||
|
|
||||||
|
while True:
|
||||||
|
led.value(not led.value())
|
||||||
|
sleep(0.5)
|
||||||
29
myws2812.py
Normal file
29
myws2812.py
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Bibliotheken laden
|
||||||
|
from machine import Pin
|
||||||
|
from neopixel import NeoPixel
|
||||||
|
from time import sleep_ms
|
||||||
|
|
||||||
|
# GPIO-Pin für WS2812
|
||||||
|
pin_np = 28
|
||||||
|
|
||||||
|
# Anzahl der LEDs
|
||||||
|
leds = 3
|
||||||
|
|
||||||
|
# Helligkeit: 0 bis 255
|
||||||
|
brightness = 128
|
||||||
|
|
||||||
|
# Geschwindigkeit (Millisekunden)
|
||||||
|
speed = 200
|
||||||
|
|
||||||
|
# Initialisierung WS2812/NeoPixel
|
||||||
|
np = NeoPixel(Pin(pin_np, Pin.OUT), leds)
|
||||||
|
|
||||||
|
# Wiederholung (Endlos-Schleife)
|
||||||
|
while True:
|
||||||
|
for i in range (leds):
|
||||||
|
# Nächste LED einschalten
|
||||||
|
np[i] = (brightness, brightness, 0)
|
||||||
|
np.write()
|
||||||
|
sleep_ms(speed)
|
||||||
|
# LED zurücksetzen
|
||||||
|
np[i] = (0, 0, 0)
|
||||||
16
uart.py
Normal file
16
uart.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import machine
|
||||||
|
import utime
|
||||||
|
|
||||||
|
uart = machine.UART(1)
|
||||||
|
|
||||||
|
uart.write("hello") # Send "hello" over UART
|
||||||
|
utime.sleep(0.5)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
while True:
|
||||||
|
if uart.any():
|
||||||
|
line = uart.readline()
|
||||||
|
print(line)
|
||||||
|
|
||||||
|
|
||||||
109
usrttst.py
Normal file
109
usrttst.py
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
import machine
|
||||||
|
import time
|
||||||
|
|
||||||
|
uart = machine.UART(1)
|
||||||
|
led = machine.Pin(25, machine.Pin.OUT)
|
||||||
|
|
||||||
|
running = True
|
||||||
|
last_cmd_time = time.ticks_ms()
|
||||||
|
|
||||||
|
# Beispiel-Parameterwerte
|
||||||
|
breite_wert = 0
|
||||||
|
strom_wert = 0.0
|
||||||
|
|
||||||
|
# Funktionstabelle (Name → Funktionsobjekt)
|
||||||
|
def handle_led_on(args):
|
||||||
|
led.value(1)
|
||||||
|
uart.write("LED ist jetzt AN\r\n")
|
||||||
|
|
||||||
|
def handle_led_off(args):
|
||||||
|
led.value(0)
|
||||||
|
uart.write("LED ist jetzt AUS\r\n")
|
||||||
|
|
||||||
|
def handle_status(args):
|
||||||
|
status = "AN" if led.value() else "AUS"
|
||||||
|
uart.write(f"LED-Status: {status}\r\n")
|
||||||
|
uart.write(f"Breite: {breite_wert}, Strom: {strom_wert}\r\n")
|
||||||
|
|
||||||
|
def handle_go(args):
|
||||||
|
global running
|
||||||
|
uart.write(">> Kommando 'go' empfangen – starte Hauptprogramm.\r\n")
|
||||||
|
running = False
|
||||||
|
|
||||||
|
def handle_pause(args):
|
||||||
|
try:
|
||||||
|
sek = float(args[0])
|
||||||
|
uart.write(f"Pausiere {sek} Sekunden...\r\n")
|
||||||
|
time.sleep(sek)
|
||||||
|
except (IndexError, ValueError):
|
||||||
|
uart.write("Fehler: 'pause' erwartet eine Zahl\r\n")
|
||||||
|
|
||||||
|
def handle_breite(args):
|
||||||
|
global breite_wert
|
||||||
|
try:
|
||||||
|
breite_wert = int(args[0])
|
||||||
|
uart.write(f"Breite gesetzt auf {breite_wert}\r\n")
|
||||||
|
except (IndexError, ValueError):
|
||||||
|
uart.write("Fehler: 'breite' erwartet eine Ganzzahl\r\n")
|
||||||
|
|
||||||
|
def handle_strom(args):
|
||||||
|
global strom_wert
|
||||||
|
try:
|
||||||
|
strom_wert = float(args[0])
|
||||||
|
uart.write(f"Strom gesetzt auf {strom_wert} A\r\n")
|
||||||
|
except (IndexError, ValueError):
|
||||||
|
uart.write("Fehler: 'strom' erwartet eine Zahl\r\n")
|
||||||
|
|
||||||
|
# Funktionstabelle (Befehl → Handlerfunktion)
|
||||||
|
command_table = {
|
||||||
|
"led_on": handle_led_on,
|
||||||
|
"led_off": handle_led_off,
|
||||||
|
"status": handle_status,
|
||||||
|
"go": handle_go,
|
||||||
|
"pause": handle_pause,
|
||||||
|
"breite": handle_breite,
|
||||||
|
"strom": handle_strom
|
||||||
|
}
|
||||||
|
|
||||||
|
# Allgemeine Eingabe-Verarbeitung
|
||||||
|
buffer = ""
|
||||||
|
|
||||||
|
def process_input():
|
||||||
|
global buffer, last_cmd_time
|
||||||
|
while uart.any():
|
||||||
|
char = uart.read(1)
|
||||||
|
if char:
|
||||||
|
c = char.decode('utf-8')
|
||||||
|
if c in ('\n', '\r'):
|
||||||
|
cmdline = buffer.strip()
|
||||||
|
if cmdline:
|
||||||
|
last_cmd_time = time.ticks_ms()
|
||||||
|
parts = cmdline.split()
|
||||||
|
cmd = parts[0]
|
||||||
|
args = parts[1:]
|
||||||
|
|
||||||
|
handler = command_table.get(cmd)
|
||||||
|
if handler:
|
||||||
|
handler(args)
|
||||||
|
else:
|
||||||
|
uart.write(f"Unbekanntes Kommando: {cmd}\r\n")
|
||||||
|
buffer = ""
|
||||||
|
else:
|
||||||
|
buffer += c
|
||||||
|
|
||||||
|
# Eingabeschleife mit Timeout
|
||||||
|
uart.write("Bereit für Kommandos (led_on, pause 1.5, go, ...)\r\n")
|
||||||
|
while running:
|
||||||
|
process_input()
|
||||||
|
|
||||||
|
if time.ticks_diff(time.ticks_ms(), last_cmd_time) > 10000:
|
||||||
|
uart.write(">> Timeout – starte Hauptprogramm.\r\n")
|
||||||
|
break
|
||||||
|
|
||||||
|
time.sleep(0.05)
|
||||||
|
|
||||||
|
# Hauptprogramm
|
||||||
|
uart.write(">> Hauptprogramm gestartet\r\n")
|
||||||
|
while True:
|
||||||
|
led.toggle()
|
||||||
|
time.sleep(0.5)
|
||||||
Reference in New Issue
Block a user