L'Arduino Uno prend en charge les opérations de saisie et de sortie analogiques, vous permettant d'interagir avec des capteurs et des actionneurs nécessitant des valeurs précises. Les opérations analogiques sont essentielles pour contrôler les dispositifs tels que les LED, les moteurs et la lecture des entrées de capteurs tels que les potentiomètres ou les capteurs de lumière. Ce tutoriel vous guidera à travers la configuration, la lecture et l'écriture analogiques, et l'utilisation d'opérations logiques comme if
instructions avec des données analogiques.
Ce dont vous aurez besoin
- Arduino Uno avec câble USB
- Potentiomètre (ou toute résistance variable) pour l'entrée analogique
- LED et une résistance de 220 ohms pour la sortie analogique
- Fils de planche à pain et de cavalier
- Un ordinateur avec l'ide Arduino installé
Étape 1: Comprendre les épingles analogiques sur Arduino
L'Arduino Uno a six broches d'entrée analogiques (A0-A5) qui peuvent lire une tension entre 0 et 5V et la convertir en valeur numérique entre 0 et 1023. Pour la sortie analogique, Arduino utilise PWM (modulation de largeur d'impulsion) sur certaines broches numériques marqué de ~
(par exemple, 3, 5, 6, 9, 10, 11).
Fonctions utilisées
-
Entrée analogique:
analogRead(pin)
- Lit une tension (0-5v) et renvoie une valeur entre 0 et 1023.
-
Sortie analogique:
analogWrite(pin, value)
- Sorte un signal PWM où
value
varie de 0 (cycle de service à 0%) à 255 (cycle de service à 100%).
- Sorte un signal PWM où
Étape 2: Entrée analogique de câblage (potentiomètre)
Connectez un potentiomètre à une broche analogique Arduino:
Épingle du potentiomètre | Connexion Arduino |
---|---|
1 (broche de fin) | 5V |
2 (milieu / sortie) | A0 |
3 (Pin de fin) | GND |
Étape 3: Câblage Sortie analogique (LED)
Connectez une LED avec une résistance de 220 ohms à une broche PWM Arduino (par ex. PIN 9):
Broche | Connexion Arduino |
---|---|
Jambe longue (+) | PIN numérique 9 |
Jambe courte (-) | GND |
Étape 4: lecture de l'entrée analogique
Utiliser le analogRead()
Fonction pour lire les données du potentiomètre:
Exemple de code: lecture d'entrée analogique
#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
}
Exécutez le code et observez les valeurs du potentiomètre (0-1023) dans le moniteur série.
Étape 5: Écriture de sortie analogique
Utiliser le analogWrite()
fonction pour contrôler la luminosité d'une LED:
Exemple de code: sortie analogique à 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);
}
}
Étape 6: combinant l'entrée et la sortie analogiques
Vous pouvez utiliser des valeurs d'entrée analogiques pour contrôler la sortie, telles que le réglage de la luminosité LED en fonction de la position du potentiomètre.
Exemple de code: le potentiomètre contrôle la luminosité du LED
#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);
}
Étape 7: Utilisation if
Déclarations avec des données analogiques
Vous pouvez créer des conditions en utilisant une entrée analogique pour effectuer des actions spécifiques:
Exemple de code: contrôle conditionnel
#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);
}
Applications de la lecture / écriture analogique
- Lecture des capteurs environnementaux (par exemple, lumière, température, humidité)
- Réglage des vitesses du moteur
- Contrôler la luminosité LED
- Traitement du signal audio
- Création d'interfaces utilisateur analogiques
Dépannage
- Lectures incorrectes du capteur: Assurez-vous un câblage approprié et vérifiez les connexions du potentiomètre.
- LED ne pas éclairer: Confirmez l'orientation LED et utilisez une résistance pour limiter le courant.
- Sortie non lisse: Ajoutez un petit retard ou en moyenne les valeurs d'entrée pour la stabilité.
Conclusion
Vous avez appris à effectuer des opérations de lecture et d'écriture analogiques à l'aide d'Arduino Uno, de valeurs de capteur de carte sur les sorties et d'utiliser if
déclarations pour la logique conditionnelle. Ces compétences sont cruciales pour créer des projets réactifs et interactifs. Expérimentez plus loin en intégrant d'autres capteurs et actionneurs analogiques pour étendre vos capacités!