2.11 Den Drehregler betätigen

In den vorherigen Projekten haben wir den digitalen Eingang des Pico W genutzt. Beispielsweise kann ein Knopf den Pin von einem niedrigen (aus) zu einem hohen Pegel (ein) ändern. Das ist ein binärer Arbeitszustand.

Der Pico W ist jedoch auch in der Lage, eine andere Art von Eingangssignal zu empfangen: den analogen Eingang. Dieser kann sich in einem Zustand von vollständig geschlossen bis vollständig geöffnet befinden und bietet ein Spektrum an möglichen Werten. Der analoge Eingang erlaubt es dem Mikrocontroller, die Lichtintensität, Schallintensität, Temperatur, Feuchtigkeit usw. der physischen Welt zu erfassen.

Normalerweise benötigt ein Mikrocontroller zusätzliche Hardware für den analogen Eingang - den Analog-Digital-Umsetzer (ADC). Der Pico W verfügt jedoch bereits über einen integrierten ADC, den wir direkt nutzen können.

pin_adc

Der Pico W besitzt drei GPIO-Pins, die für analogen Eingang genutzt werden können: GP26, GP27, GP28, also analoge Kanäle 0, 1 und 2. Zudem gibt es einen vierten analogen Kanal, der mit dem eingebauten Temperatursensor verbunden ist und hier nicht weiter erläutert wird.

In diesem Projekt versuchen wir, den analogen Wert eines Potentiometers auszulesen.

Erforderliche Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist sicherlich praktisch, ein komplettes Kit zu kaufen, hier ist der Link:

Name

KOMPONENTEN IN DIESEM KIT

LINK

Kepler Kit

450+

Kepler Kit

Sie können die Komponenten auch einzeln über die unten stehenden Links kaufen.

SN

KOMPONENTE

ANZAHL

LINK

1

Raspberry Pi Pico W

1

BUY

2

Micro-USB-Kabel

1

3

Steckbrett

1

BUY

4

Jumperkabel

Mehrere

BUY

5

Widerstand

1 (220Ω)

BUY

6

LED

1

BUY

7

Potentiometer

1

BUY

Schaltplan

sch_pot

Das Potentiometer ist ein analoges Bauteil, das in zwei verschiedene Richtungen gedreht werden kann.

Schließen Sie den mittleren Pin des Potentiometers an den analogen Pin GP28 an. Der Raspberry Pi Pico W verfügt über einen mehrkanaligen, 16-bit Analog-Digital-Umsetzer. Das bedeutet, dass die Eingangsspannung zwischen 0 und der Betriebsspannung (3,3V) auf einen Ganzzahlwert zwischen 0 und 65535 abgebildet wird. Der Wertebereich von GP28 reicht also von 0 bis 65535.

Die Berechnungsformel lautet wie folgt:

(Vp/3.3V) x 65535 = Ap

Programmieren Sie dann den Wert von GP28 (Potentiometer) als PWM-Wert von GP15 (LED). Sie werden feststellen, dass die Helligkeit der LED sich gleichzeitig ändert, wenn Sie das Potentiometer drehen.

Verdrahtung

wiring_pot

Code

Bemerkung

  • Öffnen Sie die Datei 2.11_turn_the_knob.py im Pfad kepler-kit-main/micropython oder kopieren Sie diesen Code in Thonny, klicken Sie dann auf „Aktuelles Skript ausführen“ oder drücken Sie einfach F5.

  • Vergessen Sie nicht, den Interpreter „MicroPython (Raspberry Pi Pico)“ in der rechten unteren Ecke auszuwählen.

  • Für detaillierte Anleitungen siehe Code direkt öffnen und ausführen.

import machine
import utime

potentiometer = machine.ADC(28)
led = machine.PWM(machine.Pin(15))
led.freq(1000)

while True:
    value = potentiometer.read_u16()
    print(value)
    led.duty_u16(value)
    utime.sleep_ms(200)

Wenn das Programm läuft, können wir den derzeit von Pin GP28 gelesenen analogen Wert im Shell-Fenster sehen. Drehen Sie den Drehregler, und der Wert wird sich von 0 auf 65535 ändern. Gleichzeitig wird die Helligkeit der LED mit dem Anstieg des analogen Werts zunehmen.

Funktionsweise

potentiometer = machine.ADC(28)

Zugriff auf den ADC, der mit einer durch die ID identifizierten Quelle verbunden ist. In diesem Beispiel handelt es sich um GP28.

potentiometer.read_u16()

Führt eine analoge Messung durch und gibt einen Ganzzahlwert im Bereich von 0 bis 65535 zurück. Der Rückgabewert stellt die rohe Messung dar, die vom ADC erfasst und so skaliert wurde, dass der Mindestwert 0 und der Höchstwert 65535 beträgt.