De Arduino UNO ondersteunt analoge input- en uitvoerbewerkingen, zodat u kunt communiceren met sensoren en actuatoren die precieze waarden nodig hebben. Analoge bewerkingen zijn essentieel voor het besturen van apparaten zoals LED's, motoren en het lezen van inputs van sensoren zoals potentiometers of lichtsensoren. Deze zelfstudie leidt u door de instelling, analoog lezen en schrijven en het gebruik van logische bewerkingen zoals zoals if
Uitspraken met analoge gegevens.
Wat u nodig hebt
- Arduino Uno met USB -kabel
- Potentiometer (of een variabele weerstand) voor analoge ingang
- LED en een weerstand van 220-ohm voor analoge uitgang
- Breadboard en jumper draden
- Een computer met de Arduino Ide geïnstalleerd
Stap 1: Analoge pinnen begrijpen op Arduino
De Arduino UNO heeft zes analoge invoerpennen (A0-A5) die een spanning tussen 0 en 5V kunnen lezen en deze in een digitale waarde tussen 0 en 1023 kunnen converteren. Voor analoge uitvoer gebruikt Arduino PWM (pulsbreedtemodulatie) op bepaalde digitale pinnen op bepaalde digitale pinnen op bepaalde digitale pinnen gemarkeerd met ~
(bijv. 3, 5, 6, 9, 10, 11).
Gebruikte functies
-
Analoge invoer:
analogRead(pin)
- Leest een spanning (0-5V) en retourneert een waarde tussen 0 en 1023.
-
Analoge uitgang:
analogWrite(pin, value)
- Voert een PWM -signaal uit waar
value
varieert van 0 (0% duty cyclus) tot 255 (100% duty cyclus).
- Voert een PWM -signaal uit waar
Stap 2: Bedradingsanaloge ingang (potentiometer)
Sluit een potentiometer aan op een Arduino -analoge pin:
Potentiometer pin | Arduino -verbinding |
---|---|
1 (eindpen) | 5V |
2 (midden/output) | A0 |
3 (eindpen) | GND |
Stap 3: Bedrading Analoge uitgang (LED)
Sluit een LED aan met een weerstand van 220-ohm op een Arduino PWM-pin (bijv. Pin 9):
LED -pin | Arduino -verbinding |
---|---|
Longbeen (+) | Digitale pin 9 |
Kort been (-) | GND |
Stap 4: Analoge invoer lezen
Gebruik de analogRead()
Functie om gegevens uit de potentiometer te lezen:
Voorbeeldcode: analoge invoer lezen
#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
}
Voer de code uit en observeer de potentiometerwaarden (0-1023) in de seriële monitor.
Stap 5: Analoge uitvoer schrijven
Gebruik de analogWrite()
functie om de helderheid van een LED te regelen:
Voorbeeldcode: analoge uitvoer naar 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);
}
}
Stap 6: Analoge ingang en uitgang combineren
U kunt analoge ingangswaarden gebruiken om de uitgang te regelen, zoals het aanpassen van LED -helderheid op basis van de positie van de potentiometer.
Voorbeeldcode: Potentiometer regelt LED -helderheid
#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);
}
Stap 7: gebruiken if
Uitspraken met analoge gegevens
U kunt voorwaarden maken met behulp van analoge invoer om specifieke acties uit te voeren:
Voorbeeldcode: voorwaardelijke besturing
#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);
}
Toepassingen van analoog lezen/schrijven
- Omgevingssensoren lezen (bijv. Licht, temperatuur, vochtigheid)
- Motorsnelheden aanpassen
- Het beheersen van LED -helderheid
- Audiosignaalverwerking
- Het maken van analoge gebaseerde gebruikersinterfaces
Problemen oplossen
- Onjuiste metingen van de sensor: Zorg voor de juiste bedrading en verifieer de potentiometerverbindingen.
- LED Licht niet op: Bevestig de LED -oriëntatie en gebruik een weerstand om de stroom te beperken.
- Uitgang niet soepel: Voeg een kleine vertraging toe of gemiddeld de invoerwaarden voor stabiliteit.
Conclusie
U hebt geleerd hoe u analoge lees- en schrijfbewerkingen kunt uitvoeren met behulp van Arduino UNO, MAP -sensorwaarden voor uitgangen en gebruik if
Verklaringen voor voorwaardelijke logica. Deze vaardigheden zijn cruciaal voor het creëren van responsieve, interactieve projecten. Experimenteer verder door andere analoge sensoren en actuatoren te integreren om uw mogelijkheden uit te breiden!