Der Arduino Uno unterstützt analoge Eingangs- und Ausgangsvorgänge, sodass Sie mit Sensoren und Aktuatoren interagieren können, die präzise Werte benötigen. Analogische Operationen sind für die Steuerung von Geräten wie LEDs, Motoren und Lesen von Eingaben von Sensoren wie Potentiometern oder Lichtsensoren unerlässlich. Dieses Tutorial führt Sie durch das Setup, das analoge Lesen und Schreiben und die Verwendung von Logikoperationen wie if
Aussagen mit analogen Daten.
Was Sie brauchen werden
- Arduino uno mit USB -Kabel
- Potentiometer (oder einen variablen Widerstand) für einen analogen Eingang
- LED und ein 220-Ohm-Widerstand für den analogen Ausgang
- Breadboard- und Jumper -Drähte
- Ein Computer mit der Arduino -IDE installiert
Schritt 1: Verständnis analogen Pins auf Arduino
Der Arduino Uno verfügt über sechs analoge Eingangsnadeln (A0-A5), die eine Spannung zwischen 0 und 5 V lesen und in einen digitalen Wert zwischen 0 und 1023 umwandeln können. Für analoge Ausgang verwendet Arduino PWM (Pulsbreitenmodulation) auf bestimmten digitalen Pins markiert mit ~
(z. B. 3, 5, 6, 9, 10, 11).
Funktionen verwendet
-
Analogeingabe:
analogRead(pin)
- Liest eine Spannung (0-5 V) und gibt einen Wert zwischen 0 und 1023 zurück.
-
Analogausgang:
analogWrite(pin, value)
- Gibt ein PWM -Signal aus, wo
value
reicht von 0 (0% Dienstzyklus) und 255 (100% Dienstzyklus).
- Gibt ein PWM -Signal aus, wo
Schritt 2: Analogeingabe verkabeln (Potentiometer)
Schließen Sie ein Potentiometer an einen Arduino -Analogstift an:
Potentiometerstift | Arduino -Verbindung |
---|---|
1 (Endstift) | 5v |
2 (Mittel-/Ausgang) | A0 |
3 (Endstift) | GND |
Schritt 3: Analogausgang verkabeln (LED)
Schließen Sie eine LED mit einem 220-Ohm-Widerstand an einen Arduino-PWM-Stift an (z. B. Pin 9):
LED -Stift | Arduino -Verbindung |
---|---|
Langes Bein (+) | Digital Pin 9 |
Kurzes Bein (-) | GND |
Schritt 4: Analogeingabe lesen
Benutze die analogRead()
Funktion zum Lesen von Daten aus dem Potentiometer:
Beispielcode: Analogeingabe lesen
#define potPin A0 // Potentiometer connected to A0
void setup() {
Serial.begin(9600);
Serial.println("Analog Input Test");
}
void loop() {
int sensorValue = analogRead(potPin); // Read analog value
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(500); // Wait for half a second
}
Führen Sie den Code aus und beobachten Sie die Potentiometerwerte (0-1023) im Seriennachmonitor.
Schritt 5: Analogausgang schreiben
Benutze die analogWrite()
Funktionieren Sie die Helligkeit einer LED:
Beispielcode: Analoge Ausgabe zu LED
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT); // Set LED pin as output
}
void loop() {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin, brightness); // Increase brightness
delay(10);
}
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin, brightness); // Decrease brightness
delay(10);
}
}
Schritt 6: Kombinieren Sie den analogen Eingang und die Ausgabe
Sie können analoge Eingangswerte verwenden, um den Ausgang zu steuern, z. B. die Anpassung der LED -Helligkeit basierend auf der Potentiometerposition.
Beispielcode: Potentiometer steuert die LED -Helligkeit
#define potPin A0 // Potentiometer connected to A0
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin); // Read potentiometer value
int brightness = map(sensorValue, 0, 1023, 0, 255); // Map to PWM range
analogWrite(ledPin, brightness); // Set LED brightness
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
Serial.print(" -> Brightness: ");
Serial.println(brightness);
delay(100);
}
Schritt 7: Verwenden if
Aussagen mit analogen Daten
Sie können Bedingungen mit analogen Eingaben erstellen, um bestimmte Aktionen auszuführen:
Beispielcode: Bedingte Kontrolle
#define potPin A0 // Potentiometer connected to A0
#define ledPin 9 // LED connected to pin 9
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(potPin);
if (sensorValue > 512) {
analogWrite(ledPin, 255); // Full brightness if sensor value > 512
Serial.println("Bright!");
} else {
analogWrite(ledPin, 0); // Turn off LED otherwise
Serial.println("Off");
}
delay(500);
}
Anwendungen von analogen Lesen/Schreiben
- Lesen von Umgebungssensoren (z. B. Licht, Temperatur, Luftfeuchtigkeit)
- Motordrehzahl einstellen
- Kontrolle der LED -Helligkeit
- Audiosignalverarbeitung
- Erstellen analogbasierter Benutzeroberflächen
Fehlerbehebung
- Falsche Messwerte aus dem Sensor: Stellen Sie die ordnungsgemäße Verkabelung sicher und überprüfen Sie die Potentiometer -Verbindungen.
- Led nicht aufleuchten: Bestätigen Sie die LED -Ausrichtung und verwenden Sie einen Widerstand, um den Strom zu begrenzen.
- Ausgabe nicht glatt: Fügen Sie eine kleine Verzögerung hinzu oder haben die Eingangswerte für die Stabilität.
Abschluss
Sie haben gelernt, wie man analog -Lese- und Schreibvorgänge mit Arduino Uno durchführt, Kartensensorwerte für Ausgänge und Verwendung if
Aussagen für die bedingte Logik. Diese Fähigkeiten sind entscheidend für die Schaffung reaktionsschneller, interaktiver Projekte. Experimentieren Sie weiter, indem Sie andere analoge Sensoren und Aktuatoren integrieren, um Ihre Fähigkeiten zu erweitern!