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+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung¶
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.
Code¶
Bemerkung
Sie können die Datei
19-potentiometer.ino
direkt unter dem Pfadelite-explorer-kit-main\basic_project\19-potentiometer
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
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¶
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 }
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
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 vonfromLow
undfromHigh
liegt, wird er in einen entsprechenden Wert innerhalb des Bereichs vontoLow
undtoHigh
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
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);