Mesure de distance - Infrarouge

De Wiki L.A.B
Aller à : navigation, rechercher
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

Montage LED RGB avec LDR Montage LED RGB avec LDR

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
}