Jauge lumineuse à servo
Fait partie de la section Sorties du Journey Arduino de Coddy. Leçon 24 sur 24.
Avec une aiguille sur son bras, un servomoteur devient un indicateur, comme le compteur de vitesse d’une voiture. Ici, il indique la luminosité.
Comme avec la veilleuse, la sortie AO du module donne une valeur plus faible lorsque la lumière est plus vive : environ 1023 dans l’obscurité et près de 0 en pleine lumière. Un indicateur doit pointer plus haut lorsque la lumière est plus vive, donc la conversion se fait à l’envers. Comme pour le luxmètre, donne à map() la nouvelle plage à l’envers :
int angle = map(reading, 0, 1023, 180, 0);Une lecture de 0, en pleine lumière, devient 180 degrés, et 1023, dans l’obscurité, devient 0. Toutes les valeurs intermédiaires se situent entre les deux, dans l’autre sens.
Défi
MoyenLa sortie AO du capteur de lumière est sur A0 et le servomoteur sur la broche 9. Fais du bras une jauge de luminosité :
- dans l’obscurité, le bras pointe à 0 degré ; en pleine lumière, à 180
- utilise
map()avec la nouvelle plage inversée - affiche l’angle et attends 50 ms à chaque fois
Appuie sur Run et déplace le curseur de lumière sur le capteur, puis Check.
Essayez vous-même
#include <Servo.h>
const int lightPin = A0;
Servo arm;
void setup() {
arm.attach(9);
Serial.begin(9600);
}
void loop() {
// lire la luminosité, la convertir en sens inverse sur la plage 180..0, déplacer le bras, afficher l'angle
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Sorties
Entraînez-vous par vous-même : Playground Arduino