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

Raspberry Pi Pico: LED-Helligkeit mit einem Potentiometer einstellen

  • 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(26)

# 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:

Elektronik-Sets für das Hardware-nahe Programmieren

Elektronik-Sets für das Hardware-nahe Programmieren

Programmieren mit dem Raspberry Pi Pico
Online-Meeting

Programmieren mit dem Raspberry Pi Pico

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

Frag Elektronik-Kompendium.de