[Programmation] Code de direction voiture autonome
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Code de direction voiture autonome



  1. #1
    Tpe de ssi

    Code de direction voiture autonome


    ------

    Bonjour,
    J'ai créé un code pour une voiture autonome cependant en changeant son nom celui ci ne veut plus s'ouvrir comment faire ?
    Merci d'avance

    -----
    Images attachées Images attachées  
    Dernière modification par Tpe de ssi ; 30/01/2017 à 18h40.

  2. #2
    azad

    Re : Code de direction voiture autonome

    La réponse est dans les images fournies. C'est évident.

  3. #3
    Jack
    Modérateur

    Re : Code de direction voiture autonome

    Si tu es aussi clair à ta soutenance devant jury que pour présenter ton problème, je crains le pire.

    Franchement, comment veux-tu que l'on comprenne de quoi tu parles avec aussi peu d'éléments

  4. #4
    Tpe de ssi

    Re : Code de direction voiture autonome

    Je suis désolé je voulais a la base présenter mon code sauf qu'au moment de le copier je me suis rendu compte qu'il ne s'ouvrait pas d'ou mon message plutot etrange (entre temps j'avais coller une copie qui en fait n'en etait pas une x) du coup je me suis embrouillé et comme je sais pas supprimer un post ...
    Du coup mon programme ne s'ouvre pas, car j'ai changé le titre du dossier et du fichier, cependant meme en le renommant de la meme facon qu'avant rien n'y fait et Arduino m'affiche :
    "impossible d'afficher le croquis"
    puis "impossible d'ouvrir le croquis F:\capteur 2.00\capteur2.00\capteur.ino"
    Merci d'avance et désolé pour le message précédent

  5. A voir en vidéo sur Futura
  6. #5
    Tpe de ssi

    Re : Code de direction voiture autonome

    J'ai enfin trouvé une copie a peu près valable de mon programme et donc a l'aide de l'image qui a la base devait illustrer le principe de la voiture : j'explique le principe
    Si il y a un obstacle en face elle le contourne et le longe jusqu'a trouver une voie libre dans laquelle s'engager :
    voici mon code
    Code:
    #define trigPin 13 // capteur devant
    #define echoPin 12 // capteur devant
    #define trigPin2 11// capteur 2= capteur de droite
    #define trigPin3 9// capteur 3=capteur de gauche 
    #define echoPin2 10 // capteur 2
    #define echoPin3 8 // capteur 3
    int pinServo=4;
    int periode=20000; //temps alimentation servo
    #define trigPin4 7 // capteur arriere
    #define echoPin4 6 
    #define led 2 //led rouge
    #define led2 3 //led verte
    
    
    void setup() {
    Serial.begin (9600); // initialise la connexion
    pinMode(trigPin, OUTPUT);//mise en place des capteurs
    pinMode(echoPin, INPUT); //mode reception
    pinMode(trigPin2, OUTPUT); //mode emission
    pinMode(echoPin2, INPUT);
    pinMode(trigPin3, OUTPUT);
    pinMode(echoPin3, INPUT);
    pinMode(pinServo,OUTPUT);// on prepare le pin en mode OUTPUT c est a dire sortie
    digitalWrite(pinServo,LOW); // on l initialise a l etat bas
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    pinMode(led, OUTPUT);
    pinMode(led2, OUTPUT);
    }
    
    void loop() {
      
    long duration,distance;
    digitalWrite(trigPin,LOW);
    delayMicroseconds(2); 
    digitalWrite(trigPin,HIGH);
    delayMicroseconds(10); 
    digitalWrite(trigPin,LOW);
    duration = pulseIn(echoPin,HIGH);
    distance = (duration/2) / 29.1;
    
    // capteur 2 = capteur de droite
    long duration2,distance2;
    digitalWrite(trigPin2,LOW);
    delayMicroseconds(2); 
    digitalWrite(trigPin2,HIGH);
    delayMicroseconds(10); 
    digitalWrite(trigPin2,LOW);
    duration2 = pulseIn(echoPin2,HIGH);
    distance2 = (duration2/2) / 29.1;
    
    
    // capteur 3 capteur de gauche
    long duration3,distance3;
    digitalWrite(trigPin3,LOW); 
    delayMicroseconds(2); 
    digitalWrite(trigPin3,HIGH);
    delayMicroseconds(10); 
    digitalWrite(trigPin3,LOW);
    duration3 = pulseIn(echoPin,HIGH);
    distance3 = (duration3/2) / 29.1;
    
    
    // capteur 4 = capteur arriere
    long duration4, distance4;
    digitalWrite(trigPin4,LOW); 
    delayMicroseconds(2); 
    digitalWrite(trigPin4, HIGH); // emission d un ultrason
    delayMicroseconds(10); 
    digitalWrite(trigPin4, LOW); 
    duration4 = pulseIn(echoPin4, HIGH); // reception de l ultrason
    distance4 = (duration4/2) / 29.1; // calcul de la distance a l aide de la formule d = v*t et conversion en cm
    
    
    if(distance<10){
      if(distance2<10){
         digitalWrite(pinServo,HIGH);// tourne a gauche
         setAngle(0);
         delay(1000);
         digitalWrite(pinServo,LOW);
         digitalWrite(pinServo,HIGH);
          setAngle(90); // remets les roues droites 
          delay(1000);
          digitalWrite(pinServo,LOW);
        do{   // longe l obstacle jusqu a qu il y ait une voie libre
          delay(500);
        }while(distance<20);
         digitalWrite(pinServo,HIGH);//tourne a droite
         setAngle(179);
         delay(1000);
         digitalWrite(pinServo,LOW);
         digitalWrite(pinServo,HIGH);//puis continue tout droit donc contourne l obstacle
          setAngle(90);
          delay(1000);
          digitalWrite(pinServo,LOW);
        
      }
      if(distance3<20){
         digitalWrite(pinServo,HIGH);// tourne a droite
         setAngle(179);
         delay(1000);
         digitalWrite(pinServo,LOW);
         digitalWrite(pinServo,HIGH);// remets les roues droites
          setAngle(90);
          delay(1000);
          digitalWrite(pinServo,LOW);
        do{
          delay(500);
        }while(distance3<20);
        digitalWrite(pinServo,HIGH);// tourne a gauche
         setAngle(0);
         delay(1500);
         digitalWrite(pinServo,LOW);
         digitalWrite(pinServo,HIGH);
          setAngle(90); // remets les roues droites 
          delay(1000);
          digitalWrite(pinServo,LOW);
    }
    else if (distance2>10,distance3>20){ //obstacle ni a gauche ni a droite mais devant
       digitalWrite(pinServo,HIGH);// tourne a droite
         setAngle(179);
         delay(1500);
         digitalWrite(pinServo,LOW);
         digitalWrite(pinServo,HIGH);// remets les roues droites
          setAngle(90);
          delay(1500);
          digitalWrite(pinServo,LOW);
        do{
          delay(500);
        }while(distance3<20);
        digitalWrite(pinServo,HIGH);// tourne a gauche
         setAngle(0);
         delay(1500);
         digitalWrite(pinServo,LOW);
         digitalWrite(pinServo,HIGH);
          setAngle(90); // remets les roues droites 
          delay(1500);
          digitalWrite(pinServo,LOW);
    }
    }
    
    if(distance2<10){ //obstacle a droite
      if(distance3<20){ //obstacle a gauche
        delay(1500); //continue tout droit
      }
      else if(distance3>20){ // pas d obstacle a gauche
        digitalWrite(pinServo,HIGH);
        setAngle(45); //decale a gauche
        digitalWrite(pinServo,LOW);
        delay(1500);
        digitalWrite(pinServo,HIGH);
        setAngle(90); // remettre les roues droite pour continuer la trajectoire
        digitalWrite(pinServo,LOW);
      }
    }
    if(distance3<20&&distance2>20){
       digitalWrite(pinServo,HIGH);
        setAngle(135); // decaler a droite
        digitalWrite(pinServo,LOW); mise hors tension du servo moteur
        delay(1500);
        digitalWrite(pinServo,HIGH);
        setAngle(90); //continue sa trajectoire 
        digitalWrite(pinServo,LOW); 
    }
    
    
      if (distance4 < 15) {  // si il y a un obstacle a l arriere
        digitalWrite(led,HIGH); // la lumiere rouge s allume
      digitalWrite(led2,LOW); // la lumiere verte s eteint
    }
      else if (15<distance4<30) { // sinon si il n y a pas d obstacle proche
        digitalWrite(led,LOW); // lumiere rouge eteinte 
        digitalWrite(led2,HIGH); //lumiere verte allumee
      }
      if (distance4 >= 200 || distance <= 0){ // pas d obstacle a l arriere
        digitalWrite(led,LOW);
        digitalWrite(led2,LOW);
        Serial.println("Out of range");
      }
      else {
        Serial.print(distance);
        Serial.println(" cm");
      }
      delay(500);
    }
    void setAngle(int a){ // fonction angle du servo moteur
    int duree=map(a,0,179,1000,2000);// on transforme l angle en microsecondes et on stocke dans la variable duree
    digitalWrite(pinServo,LOW);//on met le pin a l etat bas
    for(int t=0;t<300;t++){
    digitalWrite(pinServo,HIGH);// on envoie l impulsion
    delayMicroseconds(duree); // pendant la bonne duree
    digitalWrite(pinServo,LOW); // on stoppe l impulsion
    delayMicroseconds(duree); // on attend le temps restant pour atteindre la periode
    }
     }
    Pouvez vous me dire quels sont les defauts et comment faire pour les corriger ou meme dire si il fonctionne bien comme il devrait
    Nous précisons que nous avons pour capteur des HC SR04
    Merci d'avance et je m'excuse pour la laideur de mon premier message

  7. #6
    Jack
    Modérateur

    Re : Code de direction voiture autonome

    Ok, c'est un peu plus clair. Il s'agit donc d'un programme pour arduino.

    Comme il ne s'agit pas vraiment d'un problème de programmation ou d'algorithmique, je transfère ce fil en électronique où tu devrais trouver plus de réponses.

    Edit: j'ai posté pendant que tu publiais ton code, qui est bien de la prog. Mais je pense que le forum elec reste le plus adapté.
    Dernière modification par Jack ; 30/01/2017 à 20h49.

Discussions similaires

  1. Voiture + solaire + éolienne = voiture autonome
    Par invite6784ac07 dans le forum Environnement, développement durable et écologie
    Réponses: 228
    Dernier message: 07/10/2018, 10h08
  2. Voiture autonome
    Par Max2222 dans le forum Électronique
    Réponses: 23
    Dernier message: 24/09/2015, 16h46
  3. Problème de direction sur voiture télécommandée
    Par dowell123 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/02/2015, 19h10
  4. moteur pas à pas pour direction de voiture
    Par railman dans le forum Électronique
    Réponses: 8
    Dernier message: 04/09/2011, 22h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.