Mesure de distance - Infrarouge : Différence entre versions
De Wiki L.A.B
(Page créée avec « ===== Matériel ===== * Arduino Uno * Plaque d'essai (breadbord) * LED RGB à cathodes communes * 3 Résistances 1/4W 270Ω ( 220Ω ou 330Ω peuvent également convenir) *... ») |
(Aucune différence)
|
Version du 15 décembre 2015 à 12:16
Matériel
- Arduino Uno
- Plaque d'essai (breadbord)
- LED RGB à cathodes communes
- 3 Résistances 1/4W 270Ω ( 220Ω ou 330Ω peuvent également convenir)
- Capteur de distance Sharp GP2Y0A21
- Straps ou fils de liaison
Montage
Programme
Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino
/*
Ce programme allume une LED RGB cathodes communes branchée sur les broches 3,5 et 6
en fonction de la distance mesurée par le capteur IR GP2Y0A21,
les valeurs sont affichées dans le moniteur série
*/
int ledR = 3; // broche de la LED Rouge
int ledG = 5; // broche de la LED Verte
int ledB = 6; // broche de la LED Bleue
int capt = A0; // broche du capteur
int mes =0; // variable mesurée : distance
void setup() // setup est déroulé une seule fois après la remise à zéro
{
pinMode(ledR, OUTPUT); // la broche led (3) est initialisée en sortie
pinMode(ledG, OUTPUT); // la broche led (5) est initialisée en sortie
pinMode(ledB, OUTPUT); // la broche led (6) est initialisée en sortie
Serial.begin(115200); // initialisation de la liaison série à 115200 bauds
}
void loop() // loop est déroulé indéfiniment
{
digitalWrite(ledR,0); // valeur 0 sur la LED B
digitalWrite(ledG,0); // valeur 0 sur la LED G
digitalWrite(ledB,0); // valeur 0 sur la LED B
mes = analogRead(capt); // mesure de la distance
Serial.print("mesure = "); // affiche mesure = sans saut de ligne
Serial.println(mes); // affiche valeur mesuree avec saut de ligne
mes = map (mes,0,1023,0,255);
Serial.print("mesure mappee = ");// affiche mesure mappee = sans saut de ligne
Serial.println (mes); // affiche valeur mesuree et mappee avec saut de ligne
if (mes > 80) digitalWrite(ledR,1); // si mesure > 80 LED = Rouge
else
{
if (mes > 50) // si mesure > 50 LED = Orange
{
analogWrite(ledR,255);
analogWrite(ledG,127);
}
else // si mesure < 50 LED = Verte
{
digitalWrite(ledR,0);
digitalWrite(ledG,1);
}
}
delay(200); // attente pour affichage dans le moniteur serie
}