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

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

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

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

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.

Online-Workshop buchen

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

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren