Arduino UNO acceptă operațiuni de intrare și ieșire analogică, permițându -vă să interacționați cu senzori și actuatoare care necesită valori precise. Operațiunile analogice sunt esențiale pentru controlul dispozitivelor precum LED -urile, motoarele și intrările de citire de la senzori precum potențiometre sau senzori de lumină. Acest tutorial vă va ghida prin configurare, citire și scriere analogică și folosind operațiuni logice precum if
declarații cu date analogice.
Ce vei avea nevoie
- Arduino UNO cu cablu USB
- Potențiometru (sau orice rezistență variabilă) pentru intrarea analogică
- LED și o rezistență de 220-ohm pentru ieșire analogică
- Tablă de pâine și jumper
- Un computer cu IDE Arduino instalat
Pasul 1: Înțelegerea pinilor analogici pe Arduino
Arduino Uno are șase pini de intrare analogici (A0-A5) care pot citi o tensiune între 0 și 5V și să o transforme într-o valoare digitală între 0 și 1023. Pentru ieșirea analogică, Arduino folosește PWM (modularea lățimii pulsului) pe anumite pini digitali marcat cu ~
(de exemplu, 3, 5, 6, 9, 10, 11).
Funcții utilizate
-
Intrare analogică:
analogRead(pin)
- Citește o tensiune (0-5V) și returnează o valoare între 0 și 1023.
-
Ieșire analogică:
analogWrite(pin, value)
- Iese un semnal PWM unde
value
variază de la 0 (0% ciclu de serviciu) la 255 (100% ciclu de serviciu).
- Iese un semnal PWM unde
Pasul 2: Intrare analogică de cablare (potențiometru)
Conectați un potențiometru la un pin analog Arduino:
Pinul potențiometru | Conexiune Arduino |
---|---|
1 (pinul final) | 5V |
2 (mijloc/ieșire) | A0 |
3 (pinul final) | GND |
Pasul 3: Ieșire analogică de cablare (LED)
Conectați un LED cu o rezistență de 220-ohm la un pin PWM Arduino (de exemplu, pinul 9):
Pinul LED | Conexiune Arduino |
---|---|
Picior lung (+) | PIN -ul digital 9 |
Picior scurt (-) | GND |
Pasul 4: Citirea intrării analogice
Folosiți analogRead()
Funcție pentru a citi date de la potențiometru:
Exemplu de cod: citirea intrării analogice
#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
}
Rulați codul și observați valorile potențiometrului (0-1023) în monitorul serial.
Pasul 5: Scrierea ieșirii analogice
Folosiți analogWrite()
Funcție pentru a controla luminozitatea unui LED:
Exemplu de cod: ieșire analogică la 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);
}
}
Pasul 6: Combinarea intrării și ieșirii analogice
Puteți utiliza valori de intrare analogice pentru a controla ieșirea, cum ar fi reglarea luminozității LED -ului pe baza poziției potențiometrului.
Exemplu de cod: potențiometrul controlează luminozitatea LED -ului
#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);
}
Pasul 7: folosind if
Declarații cu date analogice
Puteți crea condiții folosind intrare analogică pentru a efectua acțiuni specifice:
Exemplu de cod: control condiționat
#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);
}
Aplicații de citire/scriere analogică
- Citirea senzorilor de mediu (de exemplu, lumină, temperatură, umiditate)
- Reglarea vitezei motorului
- Controlul luminozității LED -ului
- Prelucrarea semnalului audio
- Crearea de interfețe de utilizator bazate pe analogice
Depanare
- Citiri incorecte de la senzor: Asigurați cablarea corespunzătoare și verificați conexiunile potențiometrului.
- LED -ul nu se aprinde: Confirmați orientarea LED -ului și utilizați un rezistor pentru a limita curentul.
- Ieșirea nu este netedă: Adăugați o întârziere mică sau media valorilor de intrare pentru stabilitate.
Concluzie
Ați învățat cum să efectuați operațiuni de citire și scriere analogică folosind Arduino Uno, valorile senzorului MAP la ieșiri și utilizați if
Declarații pentru logica condiționată. Aceste abilități sunt cruciale pentru crearea de proiecte receptive și interactive. Experimentați în continuare integrând alți senzori analogici și actuatoare pentru a vă extinde capacitățile!