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