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!

Potentiometer

Überblick

In dieser Lektion sehen wir uns an, wie wir die Leuchtkraft einer LED mit einem Potentiometer verändern und die Daten des Potentiometers im Seriellen Monitor ablesen, um seine Wertänderungen zu beobachten.

Benötigte Komponenten

In diesem Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

Arduino Uno R4 WiFi

-

Steckbrett

KAUFEN

Jumperkabel

KAUFEN

Widerstand

KAUFEN

LED

KAUFEN

Potentiometer

KAUFEN

Verdrahtung

../_images/19-potentiometer_bb.png

Schaltplan

In diesem Experiment wird das Potentiometer als Spannungsteiler verwendet, was bedeutet, dass Geräte an alle drei Pins angeschlossen werden. Verbinden Sie den mittleren Pin des Potentiometers mit Pin A0 und die anderen beiden Pins mit 5V bzw. GND. Daher liegt die Spannung des Potentiometers zwischen 0-5V. Drehen Sie den Knopf des Potentiometers, und die Spannung an Pin A0 wird sich ändern. Dann wird diese Spannung mit dem AD-Wandler im Steuerboard in einen digitalen Wert (0-1024) umgewandelt. Durch Programmierung können wir den umgewandelten digitalen Wert nutzen, um die Helligkeit der LED auf dem Steuerboard zu steuern.

../_images/19_potentiometer_schematic.png

Code

Bemerkung

  • Sie können die Datei 19-potentiometer.ino direkt unter dem Pfad elite-explorer-kit-main\basic_project\19-potentiometer öffnen.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

19-potentiometer.ino
 1/*
 2  This code is for controlling the brightness of an LED using a potentiometer.
 3  
 4  The code uses a potentiometer as an input device. It reads analog data from 
 5  the potentiometer, scales the read value from a range of 0-1023 to 0-255, 
 6  and then uses this scaled value to control the brightness of an LED. The raw 
 7  and scaled values are also printed to the serial monitor for debugging or monitoring.
 8
 9  Board: Arduino Uno R4 
10  Component: Potentiometer
11*/
12
13const int analogPin = 0;  // Analog input pin connected to the potentiometer
14const int ledPin = 9;     // Digital output pin connected to the LED
15
16int inputValue = 0;       // Variable to store the raw value from the potentiometer
17int outputValue = 0;      // Variable to store the scaled output value
18
19void setup() {
20  Serial.begin(9600);  // Initialize serial communication with a baud rate of 9600
21}
22
23void loop() {
24  inputValue = analogRead(analogPin);              // Read the analog value from the potentiometer
25  Serial.print("Input: ");                         // Print "Input: " to the serial monitor
26  Serial.println(inputValue);                      // Print the raw input value to the serial monitor
27  
28  // Map the input value from a range of 0-1023 to a range of 0-255
29  outputValue = map(inputValue, 0, 1023, 0, 255);  
30  
31  Serial.print("Output: ");                        // Print "Output: " to the serial monitor
32  Serial.println(outputValue);                     // Print the scaled output value to the serial monitor
33  
34  analogWrite(ledPin, outputValue);                // Control the LED brightness based on the scaled value
35  delay(1000);                                     // Wait for 1 second before the next loop iteration
36}

Nachdem der Code auf das Uno-Board hochgeladen wurde, kann der serielle Monitor geöffnet werden, um die gelesenen Werte des Potentiometers zu beobachten. Wenn Sie am Knopf des Potentiometers drehen, ändert sich der gelesene Wert entsprechend. Der rohe Analogwert des Potentiometers reicht von (0) bis (1023). Gleichzeitig skaliert der Code diesen Wert in einen Bereich von (0) bis (255), der auch auf dem seriellen Monitor angezeigt wird. Dieser skalierte Wert wird dann verwendet, um die Helligkeit der angeschlossenen LED zu steuern. Die LED wird heller oder dunkler, je nach skaliertem Wert. Es ist anzumerken, dass der theoretische Bereich des Potentiometers (0) bis (1023) beträgt, der tatsächliche Bereich kann jedoch aufgrund von Hardwaretoleranzen leicht variieren.

Code-Analyse

  1. Initialisierung und Einrichtung (Einstellen der Pin-Modi und Initialisieren der seriellen Kommunikation)

    Bevor wir in die Schleife einsteigen, definieren wir, welche Pins wir verwenden und initialisieren die serielle Kommunikation.

    const int analogPin = 0;  // Analog input pin connected to the potentiometer
    const int ledPin = 9;     // Digital output pin connected to the LED
    
    void setup() {
      Serial.begin(9600);  // Initialize serial communication with a baud rate of 9600
    }
    
  2. Lesen des Analogeingangs (Daten vom Potentiometer abrufen)

    In diesem Abschnitt lesen wir die Analogdaten vom Potentiometer und drucken sie auf den seriellen Monitor.

    inputValue = analogRead(analogPin);  // Read the analog value from the potentiometer
    Serial.print("Input: ");             // Print "Input: " to the serial monitor
    Serial.println(inputValue);          // Print the raw input value to the serial monitor
    
  3. Kartierung und Skalierung (Umrechnung der Potentiometer-Daten)

    Wir skalieren die Rohdaten vom Potentiometer, die im Bereich von 0-1023 liegen, in einen neuen Bereich von 0-255.

    map(value, fromLow, fromHigh, toLow, toHigh) wird verwendet, um eine Zahl von einem Bereich in einen anderen umzurechnen. Wenn der Wert innerhalb des Bereichs von fromLow und fromHigh liegt, wird er in einen entsprechenden Wert innerhalb des Bereichs von toLow und toHigh umgewandelt, wobei die Proportionalität zwischen den beiden Bereichen erhalten bleibt.

    In diesem Fall müssen wir, da der LED-Pin (Pin 9) einen Bereich von 0-255 hat, Werte im Bereich von 0-1023 auf dieselbe Skala von 0-255 abbilden.

    outputValue = map(inputValue, 0, 1023, 0, 255);  // Map the input value to a new range
    
  4. Steuerung der LED und serielle Ausgabe

    Schließlich steuern wir die Helligkeit der LED basierend auf dem skalierten Wert und drucken den skalierten Wert zur Überwachung.

    Serial.print("Output: ");                        // Print "Output: " to the serial monitor
    Serial.println(outputValue);                     // Print the scaled output value to the serial monitor
    analogWrite(ledPin, outputValue);                // Control the LED brightness based on the scaled value
    delay(1000);