Raspberry Pi Pico: LED-Helligkeit mit einem Potentiometer einstellen
Im Prinzip kennt ein GPIO nur zwei Zustände: „High“ und „Low“. Also „An“ und „Aus“ oder „1“ und „0“. Es handelt sich dabei um die binäre Logik. Werte dazwischen gibt es nicht. Demnach kann man eine LED an einem GPIO-Ausgang auch nur ein- und ausschalten. Die Helligkeit der LED wird mit dem Vorwiderstand festgelegt.
Trotzdem gibt es einen Trick mit dem Du die Helligkeit einer LED steuern kannst. Das geht, in dem Du zwischen den Zuständen „1“ und „0“, also „An“ und „Aus“, so schnell hin- und herschaltest, dass Du den Schaltvorgang mit den Augen nicht sehen kann. Die Helligkeit der LED wird aber durch das Verhältnis der Dauer zwischen „0“ und „1“ eingestellt und dynamisch verändert.
Schaltung
Der schnelle Wechsel zwischen „An“ und „Aus“ lässt sich mit einem PWM-Signal realisieren. Um das Signal einzustellen verwenden wir ein Potentiometer. Das ist ein veränderbarer Widerstand. Er hat drei Anschlüsse und einen Drehknopf. Damit stellen wir das Puls-Pause-Verhältnis des PWM-Signals ein.
Aufbau und Bauteile
- Potentiometer, 10K (103)
Programmcode für MicroPython
Im Programmcode wird die Onboard-LED mit dem PWM-Signal und ein ADC-Eingang initialisiert. Der ADC-Eingang misst den Spannungsabfall am Potentiometer und liefert ein Ganzzahl zurück.
In einer Endlosschleife wird abhängig vom ADC-Eingang das PWM-Signal (Duty-Cycle) gesetzt. Der Wert wird zusätzlich auf der Kommandozeile ausgegeben.
# Bibliotheken laden from machine import Pin, ADC, PWM from time import sleep # Initialisierung des ADC0-Eingang (GPIO26) adc0 = ADC(0) # Initialisierung Onboard-LED/PWM-Ausgang pwm = PWM(Pin(25, Pin.OUT)) pwm.freq(1000) # Wiederholung (Endlos-Schleife) while True: # ADC0 lesen value = adc0.read_u16() # PWM-Duty-Cycle setzen pwm.duty_u16(value) print(value) sleep(0.5)
Programmcode für MicroPython mit picozero
„picozero“ ist eine Einsteiger-freundliche MicroPython-Bibliothek, um elektronische Bauteile, wie LEDs, Taster und Sensoren einfacher zu programmieren und zu steuern.
from picozero import Pot, PWMLED from time import sleep pot = Pot(0) led = PWMLED(25) while True: #print(pot.value, pot.voltage) led.on(value=pot.value) sleep(0.1)
Weitere verwandte Themen:
- Raspberry Pi Pico: Grundlagen zu ADC (Analog-Digital-Converter)
- Raspberry Pi Pico: Experimente mit ADC
- Raspberry Pi Pico: LED-Helligkeit einstellen
- Raspberry Pi Pico: Nachtschaltung (Dämmerungsschalter)
- Raspberry Pi Pico: Helligkeit einer LED mit einem Rotary Encoder einstellen (KY-040)
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.
- LED: Einschalten, ausschalten, blinken und Helligkeit steuern
- Taster: Entprellen und Zustände anzeigen
- LED mit Taster einschalten und ausschalten
- Ampel- und Lauflicht-Steuerung
- Elektronischer Würfel
- Eigene Steuerungen programmieren
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)