Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
2.11 - Drehen Sie den Knopf
In vorherigen Projekten haben wir den digitalen Eingang am Pico W verwendet. Ein Taster kann beispielsweise den Pin von einem niedrigen (aus) auf einen hohen Pegel (ein) umschalten. Dies ist ein binärer Arbeitszustand.
Der Pico W kann jedoch auch eine andere Art von Eingangssignal empfangen: den analogen Eingang. Dieser kann in einem beliebigen Zustand von vollständig geschlossen bis vollständig geöffnet sein und verfügt über eine Reihe möglicher Werte. Der analoge Eingang ermöglicht es dem Mikrocontroller, die Lichtintensität, Schallintensität, Temperatur, Feuchtigkeit usw. der physischen Welt zu erfassen.
Normalerweise benötigt ein Mikrocontroller eine zusätzliche Hardware, um den analogen Eingang umzusetzen - den Analog-Digital-Wandler (ADC). Aber der Pico W hat bereits einen integrierten ADC, den wir direkt nutzen können.
Der Pico W hat drei GPIO-Pins, die analogen Eingang nutzen können: GP26, GP27, GP28, also die analogen Kanäle 0, 1 und 2. Zusätzlich gibt es einen vierten analogen Kanal, der mit dem eingebauten Temperatursensor verbunden ist und hier nicht vorgestellt wird.
In diesem Projekt versuchen wir, den Analogwert eines Potentiometers auszulesen.
Erforderliche Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen. Hier ist der Link:
Name |
ELEMENTE IN DIESEM KIT |
KAUF-LINK |
---|---|---|
Kepler Kit |
450+ |
Die Teile können auch einzeln über die folgenden Links gekauft werden.
SN |
KOMPONENTENBESCHREIBUNG |
ANZAHL |
KAUF-LINK |
---|---|---|---|
1 |
1 |
||
2 |
Micro-USB-Kabel |
1 |
|
3 |
1 |
||
4 |
Mehrere |
||
5 |
1(220Ω) |
||
6 |
1 |
||
7 |
1 |
Schaltplan
Das Potentiometer ist ein analoges Gerät, das sich in zwei verschiedene Richtungen drehen lässt.
Verbinden Sie den mittleren Pin des Potentiometers mit dem analogen Pin GP28. Der Raspberry Pi Pico W verfügt über einen Mehrkanal-Analog-Digital-Wandler mit 16 Bit. Das bedeutet, dass er die Eingangsspannung zwischen 0 und der Betriebsspannung (3,3V) auf einen ganzzahligen Wert zwischen 0 und 1023 abbildet, sodass der GP28-Wert im Bereich von 0 bis 1023 liegt.
Die Berechnungsformel ist unten dargestellt.
Digitaler Wert = (Analogspannung / 3,3V) * 1023
Programmieren Sie anschließend den Wert von GP28 (Potentiometer) als PWM-Wert von GP15 (LED). Auf diese Weise werden Sie feststellen, dass sich die Helligkeit der LED beim Drehen des Potentiometers gleichzeitig verändert.
Verkabelung
Code
Bemerkung
Sie können die Datei
2.11_turn_the_knob.ino
im Pfadkepler-kit-main/arduino/2.11_turn_the_knob
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Vergessen Sie nicht, die Platine (Raspberry Pi Pico) und den korrekten Anschluss auszuwählen, bevor Sie auf die Schaltfläche Hochladen klicken.
Wenn das Programm läuft, können wir den aktuell von Pin GP28 gelesenen Analogwert im seriellen Monitor sehen. Drehen Sie den Knopf, und der Wert wird sich von 0 bis 1023 ändern. Gleichzeitig wird die Helligkeit der LED zunehmen, je höher der Analogwert ist.
Wie funktioniert es?
Um den seriellen Monitor zu aktivieren, müssen Sie die serielle Kommunikation in setup()
starten und die Datenrate auf 9600 einstellen.
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
In der Loop-Funktion wird der Wert des Potentiometers gelesen, dann wird dieser Wert von 0-1023 auf 0-255 abgebildet, und schließlich wird der abgebildete Wert verwendet, um die Helligkeit der LED zu steuern.
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
int brightness = map(sensorValue, 0, 1023, 0, 255);
analogWrite(ledPin, brightness);
}
analogRead() wird verwendet, um den Wert des sensorPin (Potentiometer) zu lesen und ihn der Variable
sensorValue
zuzuweisen.
int sensorValue = analogRead(sensorPin);
Der Wert von SensorValue wird im seriellen Monitor ausgegeben.
Serial.println(sensorValue);
Hier wird die Funktion map(value, fromLow, fromHigh, toLow, toHigh) benötigt, da der gelesene Potentiometerwert im Bereich 0-1023 liegt und der Wert eines PWM-Pins im Bereich 0-255 liegt. Sie wird verwendet, um eine Zahl von einem Bereich in einen anderen umzumappen.
int brightness = map(sensorValue, 0, 1023, 0, 255);
Nun können wir diesen Wert verwenden, um die Helligkeit der LED zu steuern.
analogWrite(ledPin, brightness);