Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 193

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/LocalSettings.php on line 197

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338

Warning: putenv() has been disabled for security reasons in /home/users4/d/debrouilloweb/www/wikidebrouillard/includes/parser/Parser.php on line 2338
[ Wikidébrouillard ] Ping lumineux piloté par Arduino.

Ping lumineux piloté par Arduino.

De Wikidebrouillard.

(Ce montage donne un affichage sur 3 LED de la distance qui le sépare d'un obstacle.)
(Code)
Ligne 18 : Ligne 18 :
===Explication===
===Explication===
===Schéma Fritzing===
===Schéma Fritzing===
-
===Code===
+
 
-
<pre>
+
// definition des pins
-
mettre le code entre ces deux balises
+
int led1 = 8;
-
//attention à bien documenter le code !
+
int led2 = 12;
-
</pre>
+
int led3 = 13;
 +
int commande = 7;
 +
int echo = 4;
 +
 
 +
// Fonction de setup, affectations en entree ou sortie des pins I/O
 +
void setup() {
 +
  pinMode(led1, OUTPUT); 
 +
  pinMode(led2, OUTPUT);
 +
  pinMode(led3, OUTPUT);
 +
  pinMode(commande, OUTPUT);
 +
  pinMode(echo, INPUT);
 +
}
 +
 
 +
/* Fonction de chenillard, parametrable en rentrant un entier
 +
correspondant au temps d'attente en millisecondes entre chaque
 +
decalage de led */
 +
void chenillard(int tempo)
 +
{
 +
    unsigned int cheni=0;
 +
    do
 +
    {
 +
    if(cheni==0)
 +
    {
 +
        digitalWrite(led1, LOW);
 +
        digitalWrite(led2, HIGH);
 +
        digitalWrite(led3, HIGH);
 +
    }else if(cheni==1)
 +
    {
 +
        digitalWrite(led1, HIGH);
 +
        digitalWrite(led2, LOW);
 +
        digitalWrite(led3, HIGH);
 +
    }else if(cheni==2)
 +
    {
 +
        digitalWrite(led1, HIGH);
 +
        digitalWrite(led2, HIGH);
 +
        digitalWrite(led3, LOW);
 +
       
 +
    }
 +
    delay(tempo);
 +
    cheni++;
 +
    }while(cheni!=3);
 +
}
 +
 
 +
 
 +
 
 +
// ******* MAIN *******
 +
 
 +
 
 +
 
 +
// declaration initalisation des variables internes compteur et temps.
 +
  unsigned int ctr=0, time=0;
 +
 
 +
 
 +
 
 +
// Tache de fond
 +
 
 +
void loop() {
 +
 
 +
// EMMISION ECHO
 +
/* Tant que le capteur ne retoune pas d'echo, on envoie une trame
 +
d'ultrasons toutes les 65ms, un intervalle inferieur causerai des
 +
interferences entres deux trames successives */
 +
 
 +
  while(digitalRead(echo)==LOW)
 +
  {
 +
    if(time==65) //emmission test toutes les 65ms
 +
                {
 +
                    digitalWrite(commande, HIGH);
 +
                    delay(1); //impulsion 1 ms
 +
                    digitalWrite(commande, LOW);
 +
                    time=0;
 +
                }
 +
            else
 +
                {
 +
                    time++;
 +
                    delay(1);
 +
                }
 +
  }
 +
 
 +
// CALCUL TEMPS ECHO EN MS
 +
/*Comptage des millisecondes durant lesquelles le signal
 +
d'echo reste a l'etat haut. C'est l'image du temps que mets
 +
la trame d'ultrasons pour faire l'aller-retour entre
 +
l'emetteur/capteur et l'obstacle */
 +
 
 +
  if(digitalRead(echo)==HIGH)
 +
            {
 +
                while(digitalRead(echo)==HIGH)
 +
                  {
 +
                    ctr++;
 +
                    delay(1);
 +
                  }
 +
            }
 +
           
 +
/* En fonction du temps d'echo, donc de la distance de l'objet,
 +
affichage de différentes combinaisons avec les leds, actives sur
 +
etat bas : digitalWrite(led,LOW) allume la led */
 +
 
 +
            if(ctr<=1) // affichage pour 0 ou 1ms
 +
            {
 +
                chenillard(70);
 +
            }
 +
            else if((ctr>1)&&(ctr<=2)) //affichage pour 2ms
 +
            {
 +
                chenillard(200);
 +
            }else if((ctr>2)&&(ctr<=3)) //affichage pour 3ms
 +
            {
 +
                digitalWrite(led1,LOW);
 +
                digitalWrite(led2, LOW);
 +
                digitalWrite(led3, LOW);
 +
            }
 +
            else if((ctr>3) && (ctr<=4)) //affichage pour 4ms
 +
            {
 +
                digitalWrite(led1, LOW);
 +
                digitalWrite(led2, LOW);
 +
                digitalWrite(led3, HIGH);
 +
            }
 +
            else if((ctr>4) && (ctr<=5)) //affichage pour 5ms
 +
            {
 +
                digitalWrite(led1, LOW);
 +
                digitalWrite(led2, HIGH);
 +
                digitalWrite(led3, HIGH);
 +
            }else if(ctr>5) // //affichage pour plus de 5ms
 +
            {
 +
                digitalWrite(led1, HIGH);
 +
                digitalWrite(led2, HIGH);
 +
                digitalWrite(led3, HIGH);
 +
            }
 +
           
 +
            ctr=0; // initialistation compteur pour mesure suivante
 +
}
==Liens avec d'autres projets arduino==
==Liens avec d'autres projets arduino==

Version du 14 janvier 2014 à 16:49

Article incomplet en cours de rédaction
Modèle:Vidéo

Sommaire

Présentation du projet Arduino

Évaluation de la distance entre un obstacle et le capteur a ultrason.

Liste du matériel

réalisation du projet

Explication

Schéma Fritzing

// definition des pins int led1 = 8; int led2 = 12; int led3 = 13; int commande = 7; int echo = 4;

// Fonction de setup, affectations en entree ou sortie des pins I/O void setup() {

 pinMode(led1, OUTPUT);  
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
 pinMode(commande, OUTPUT);
 pinMode(echo, INPUT);

}

/* Fonction de chenillard, parametrable en rentrant un entier correspondant au temps d'attente en millisecondes entre chaque decalage de led */ void chenillard(int tempo) {

   unsigned int cheni=0;
   do
   {
   if(cheni==0)
   {
       digitalWrite(led1, LOW); 
       digitalWrite(led2, HIGH); 
       digitalWrite(led3, HIGH); 
   }else if(cheni==1)
   {
       digitalWrite(led1, HIGH); 
       digitalWrite(led2, LOW); 
       digitalWrite(led3, HIGH);
   }else if(cheni==2)
   {
       digitalWrite(led1, HIGH); 
       digitalWrite(led2, HIGH); 
       digitalWrite(led3, LOW);
       
   }
   delay(tempo);
   cheni++;
   }while(cheni!=3);

}


// ******* MAIN *******


// declaration initalisation des variables internes compteur et temps.

 unsigned int ctr=0, time=0;


// Tache de fond

void loop() {

// EMMISION ECHO /* Tant que le capteur ne retoune pas d'echo, on envoie une trame d'ultrasons toutes les 65ms, un intervalle inferieur causerai des interferences entres deux trames successives */

 while(digitalRead(echo)==LOW)		
 {
   if(time==65) //emmission test toutes les 65ms
               {
                   digitalWrite(commande, HIGH); 
                   delay(1); //impulsion 1 ms
                   digitalWrite(commande, LOW); 
                   time=0;
               }
           else
               {
                   time++;
                   delay(1);
               }
 }
 

// CALCUL TEMPS ECHO EN MS /*Comptage des millisecondes durant lesquelles le signal d'echo reste a l'etat haut. C'est l'image du temps que mets la trame d'ultrasons pour faire l'aller-retour entre l'emetteur/capteur et l'obstacle */

  if(digitalRead(echo)==HIGH)
           {
                while(digitalRead(echo)==HIGH)
                  {
                   ctr++;
                   delay(1);
                  }
           }
           

/* En fonction du temps d'echo, donc de la distance de l'objet, affichage de différentes combinaisons avec les leds, actives sur etat bas : digitalWrite(led,LOW) allume la led */

           if(ctr<=1) // affichage pour 0 ou 1ms
           {
               chenillard(70);
           }
           else if((ctr>1)&&(ctr<=2)) //affichage pour 2ms
           {
               chenillard(200);
           }else if((ctr>2)&&(ctr<=3)) //affichage pour 3ms
           {
               digitalWrite(led1,LOW); 
               digitalWrite(led2, LOW); 
               digitalWrite(led3, LOW);
           }
           else if((ctr>3) && (ctr<=4)) //affichage pour 4ms
           {
               digitalWrite(led1, LOW); 
               digitalWrite(led2, LOW); 
               digitalWrite(led3, HIGH);
           }
           else if((ctr>4) && (ctr<=5)) //affichage pour 5ms
           {
               digitalWrite(led1, LOW); 
               digitalWrite(led2, HIGH); 
               digitalWrite(led3, HIGH);
           }else if(ctr>5) // //affichage pour plus de 5ms
           {
               digitalWrite(led1, HIGH); 
               digitalWrite(led2, HIGH); 
               digitalWrite(led3, HIGH);
           }
           
           ctr=0; // initialistation compteur pour mesure suivante

}

Liens avec d'autres projets arduino

chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino

Pour aller plus loin

Liens avec le quotidien

quelles peuvent être les applications technologiques de ce montage, ou est-ce qu'on retrouve des programmes qui y ressemble ?
Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraits
FI

Ping lumineux piloté par Arduino.

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique