Arduino Nano ESP32 - Potentiometer

Dieses Tutorial gibt Anweisungen, wie man den Arduino Nano ESP32 mit dem Potentiometer verwendet. Im Detail werden wir lernen:

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Potentiometer
1×Alternativ: 10k Ohm Trimmer Potentiometer
1×(Alternativ) Potentiometer Kit
1×(Alternativ) Potentiometer Module with Knob
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über Potentiometer

Das Potentiometer (auch bekannt als Drehwinkelgeber) wird verwendet, um die Einstellungen zu ändern (z. B. die Lautstärke des Lautsprechers, die Raumtemperatur, die Helligkeit der Lampe...)

Potentiometer-Pinbelegung

Potentiometer-Pinbelegung

Ein Potentiometer hat normalerweise drei Anschlüsse:

  • VCC-Pin: Verbinde diesen Pin mit VCC (5 V oder 3,3 V)
  • GND-Pin: Verbinde diesen Pin mit GND (0 V)
  • Ausgabepin: gibt die Spannung an den Eingangs-Pin des ESP32 aus.
Pinbelegung des Potentiometers

※ Notiz:

Der GND-Pin und der VCC-Pin sind austauschbar.

Wie ein Potentiometer funktioniert

Die Welle des Potentiometers kann von 0° (am nächsten zum GND-Pin) bis zu einem Winkel (am nächsten zum VCC-Pin) rotiert werden, genannt ANGLE_MAX.

Die Spannung am Ausgangspin ist direkt proportional zur Winkelposition der Welle und variiert von 0 bis VCC. Die folgende Tabelle zeigt die Beziehung zwischen dem Winkel und der Spannung am Ausgangspin:

Angle Voltage
0v
ANGLE_MAX°VCC
angle°angle° × VCC / ANGLE_MAX°

※ Notiz:

Der ANGLE_MAX-Wert hängt von den Herstellern ab.

Wie ein Potentiometer funktioniert

Arduino Nano ESP32 - Drehpotentiometer

Der analoge Eingangspin des ESP32 wandelt die Spannung (zwischen 0 V und 3,3 V) in ganzzahlige Werte (zwischen 0 und 4095) um, die als ADC-Wert oder Analogwert bezeichnet werden.

Wir können den Ausgangspin des Potentiometers mit dem analogen Eingangspin eines ESP32 verbinden und anschließend den analogen Wert von diesem Pin lesen.

Der analoge Wert des Eingangspins kann auf einen anderen Wert skaliert werden. Schauen wir uns die Anwendungsfälle an:

  • Den analogen Wert auf den Winkel des Potentiometers neu skalieren.
  • Den analogen Wert auf die Spannung des Potentiometers neu skalieren.
  • Den analogen Wert auf den Einstellwert neu skalieren (z. B. die Lautstärke des Lautsprechers, die Raumtemperatur, die Lampenhelligkeit...)

Bereich neu skalieren

FROM TO
Anglerotated by userANGLE_MAX°
Voltagefrom potentiometer's pin 0V3.3V
ADC valueread by ESP32 04095
Setting valueconverted by ESP32 VALUE_MINVALUE_MAX

Schaltplan zwischen Potentiometer und Arduino Nano ESP32

Arduino Nano ESP32 Potentiometer-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wie man Potentiometer programmiert

  • Den Wert von einem Eingangs-Pin auslesen, der mit dem Ausgangspin des Potentiometers verbunden ist, indem die analogRead()-Funktion verwendet wird.
Es gibt keinen englischen Kommentar zum Übersetzen. Der Kommentar "A5" ist ein Pin-Label und wird nicht übersetzt. Der Code bleibt unverändert: analog_value = analogRead(A5); // A5
  • Den Winkel des Potentiometers neu skalieren, indem die map() Funktion verwendet wird.
angle = map(analog_value, 0, 4095, 0, ANGLE_MAX);
  • Auf die Spannung des Potentiometers skalieren:
voltage = map(analog_value, 0, 4095, 0, 3.3);
  • Auf den regelbaren Wert skalieren (z. B. Lautstärke des Stereos, Helligkeit, Geschwindigkeit des Gleichstrommotors ... )
value = map(analog_value, 0, 4095, VALUE_MIN, VALUE_MAX);
  • Zum Beispiel die Skalierung der LED-Helligkeit. Wie in diesem Tutorial erwähnt, kann die Helligkeit der LED durch die Verwendung eines PWM-Werts von 0 (immer AUS) bis 255 (immer AN) gesteuert werden. Daher können wir den analogen Wert der LED-Helligkeit (von AUS bis zur maximalen Helligkeit) wie folgt zuordnen:
brightness = map(analog_value, 0, 4095, 0, 255);

Wenn Sie die LED vom Nachtlicht bis zur hellsten Stufe dimmen möchten,

nightlight = 100; // abhängig von der gewünschten Helligkeit brightness = map(analog_value, 0, 4095, nightlight, 255);

※ Notiz:

Die map()-Funktion kann nur verwendet werden, um den analogen Wert auf den Datentyp int oder long zu skalieren. Falls der steuerbare Wert vom Typ [float] ist, müssen Sie stattdessen die floatMap()-Funktion verwenden, statt der map()-Funktion.

floatMap()-Funktion:

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

Arduino Nano ESP32-Code

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-nano-esp32/arduino-nano-esp32-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // the setup routine runs once when you press reset: void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin A5: int analog_value = analogRead(A5); // Rescale to potentiometer's voltage (from 0V to 3.3V): float voltage = floatMap(analog_value, 0, 4095, 0, 3.3); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Schnelle Schritte

Arduino IDE Code hochladen
  • Öffne den seriellen Monitor in der Arduino-IDE
So öffnet man den seriellen Monitor in der Arduino IDE.
  • Drehen Sie das Potentiometer
  • Überprüfen Sie das Ergebnis im Serial Monitor. Es sieht wie folgt aus:
COM6
Send
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.2 Analog: 4095, Voltage: 3.30 Analog: 4095, Voltage: 3.30
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

Dieses Tutorial verwendet die Funktion analogRead(), um Werte von einem ADC (Analog-Digital-Wandler) zu lesen, der an einen Sensor oder Bauteil angeschlossen ist. Der ADC des Arduino Nano ESP32 eignet sich für Projekte, die keine hohe Genauigkeit erfordern. Für Projekte, die jedoch präzise Messwerte benötigen, beachten Sie Folgendes:

  • Der ADC des Arduino Nano ESP32 ist nicht völlig exakt und könnte eine Kalibrierung für korrekte Ergebnisse erfordern. Jedes Arduino Nano ESP32-Board kann sich leicht unterscheiden, daher ist eine Kalibrierung für jedes einzelne Board notwendig.
  • Die Kalibrierung kann herausfordernd sein, insbesondere für Anfänger, und liefert möglicherweise nicht immer die gewünschten exakten Ergebnisse.

Für Projekte, die eine hohe Präzision erfordern, ziehen Sie in Erwägung, einen externen ADC zu verwenden (z. B. ADS1115) mit dem Arduino Nano ESP32 oder die Verwendung eines anderen Arduino-Boards, wie dem Arduino Uno R4 WiFi, das einen zuverlässigeren ADC besitzt. Wenn Sie dennoch die Kalibrierung des ADC des Arduino Nano ESP32 durchführen möchten, siehe den ESP32 ADC Calibration Driver.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!