Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Vertiefen Sie sich mit anderen Enthusiasten in die Welt von Raspberry Pi, Arduino und ESP32.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Sonderangebote: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Bereit, mit uns zu erkunden und zu kreieren? Klicken Sie auf [here] und treten Sie heute bei!

2.4 Analogeingang

In dieser Lektion untersuchen wir die Verwendung eines Potentiometers als Analogeingabegerät zur Anpassung der Helligkeit einer LED. Durch einfaches Drehen des Potentiometerknopfes können Sie die Lichtintensität der LED variieren, ähnlich wie Sie die Helligkeit einer Schreibtischlampe einstellen würden. Dieses einfache Setup zeigt den direkten Einfluss von Analogeingaben auf reale Anwendungen und bietet ein intuitives Verständnis dafür, wie Änderungen der Eingaben elektronische Komponenten steuern können.

Verfügbare Pins

  • Verfügbare Pins

    Hier ist eine Liste der verfügbaren Pins auf dem ESP32-Board für dieses Projekt.

    Verfügbare Pins

    IO14, IO25, I35, I34, I39, I36

  • Strapping Pins

    Die folgenden Pins sind Strapping Pins, die den Startvorgang des ESP32 beim Einschalten oder Zurücksetzen beeinflussen. Sobald der ESP32 jedoch erfolgreich hochgefahren ist, können sie als normale Pins verwendet werden.

    Strapping Pins

    IO0, IO12

Benötigte Komponenten

In diesem Projekt benötigen wir die folgenden Komponenten.

KOMPONENTEN-BESCHREIBUNG

KAUFLINK

ESP32 WROOM 32E

BUY

ESP32 Kamera-Erweiterung

-

Steckbrett

BUY

Mehrere Verbindungskabel

BUY

Widerstand

BUY

LED

BUY

Potentiometer

BUY

Schaltplan

../_images/circuit_5.8_potentiometer.png

Wenn Sie das Potentiometer drehen, ändert sich der Wert von I35. Durch Programmierung können Sie den Wert von I35 verwenden, um die Helligkeit der LED zu steuern. Daher ändert sich die Helligkeit der LED entsprechend, wenn Sie das Potentiometer drehen.

Verdrahtung

../_images/5.8_potentiometer_bb.png

Code

Laden Sie diesen Code herunter oder kopieren Sie ihn direkt in die Arduino IDE.

Nachdem der Code erfolgreich hochgeladen wurde, drehen Sie das Potentiometer und sehen, wie sich die Helligkeit der LED entsprechend ändert. Gleichzeitig können Sie die Analog- und Spannungswerte des Potentiometers im seriellen Monitor sehen.

Wie funktioniert das?

  1. Definieren Sie Konstanten für Pin-Verbindungen und PWM-Einstellungen.

    const int potPin = 35; // Potentiometer an GPIO35 angeschlossen
    const int ledPin = 26; // LED an GPIO26 angeschlossen
    
    // PWM-Einstellungen
    const int freq = 5000; // PWM-Frequenz
    const int resolution = 12; // PWM-Auflösung (Bits)
    const int channel = 0; // PWM-Kanal
    

    Hier ist die PWM-Auflösung auf 12 Bit eingestellt und der Bereich liegt zwischen 0 und 4095.

  2. Konfigurieren Sie das System in der setup()-Funktion.

    void setup() {
        Serial.begin(115200);
    
        // PWM konfigurieren
        ledcAttach(ledPin, freq, resolution);
    }
    
    • In der setup()-Funktion wird die serielle Kommunikation mit einer Baudrate von 115200 gestartet.

    • Die Funktion ledcAttach() wird aufgerufen, um den angegebenen LED-Pin mit der angegebenen Frequenz und Auflösung einzurichten.

  3. Hauptschleife (wird wiederholt ausgeführt) in der loop()-Funktion.

    void loop() {
    
        int potValue = analogRead(potPin); // den Wert des Potentiometers lesen
        uint32_t voltage_mV = analogReadMilliVolts(potPin); // die Spannung in Millivolt lesen
    
        ledcWrite(ledPin, potValue);
    
        Serial.print("Potentiometer Value: ");
        Serial.print(potValue);
        Serial.print(", Voltage: ");
        Serial.print(voltage_mV / 1000.0); // Convert millivolts to volts
        Serial.println(" V");
    
        delay(100);
    }
    
    • uint32_t analogReadMilliVolts(uint8_t pin);: Diese Funktion wird verwendet, um den ADC-Wert für einen gegebenen Pin/ADC-Kanal in Millivolt zu erhalten.

      • pin: GPIO-Pin zum Lesen des Analogwerts.

    Der Potentiometerwert wird direkt als PWM-Tastverhältnis zur Steuerung der LED-Helligkeit über die Funktion ledcWrite() verwendet, da der Wertebereich ebenfalls von 0 bis 4095 reicht.