IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Aide vérification programme arduino pour piloter des capteurs de distance à ultrasons


Sujet :

Arduino

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Aide vérification programme arduino pour piloter des capteurs de distance à ultrasons
    Bonjour.
    je ne possède pour l'instant aucun problème niveau programmation mais j'ai commandé les composants nécessaires pour construire mon robot.
    en attendant, j'aimerais juste que l'on me confirme si mon programme est bien réalisé ou si il risque d'avoir quelques problèmes

    le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    //pin moteur
    int pin1_moteur1 = 2;
    int pin2_moteur1 = 4;
    int pinP_moteur1 = 5;
    int pin1_moteur2 = 7;
    int pin2_moteur2 = 8;
    int pinP_moteur2 = 9;
     
    //pin ultrason
    int trig1 = 3; 
    int echo1 = 6; 
     
    int trig2 = 10; 
    int echo2 = 11; 
     
    int trig3 = 12; 
    int echo3 = 13; 
     
    int trig4 = A0;
    int echo4 = A1;
     
    //variables
    long lecture_echo1; 
    long cm1;
     
    long lecture_echo2; 
    long cm2;
     
    long lecture_echo3; 
    long cm3;
     
    long lecture_echo4; 
    long cm4;
     
    void setup() 
    { 
      pinMode(trig1, OUTPUT); 
      digitalWrite(trig1, LOW); 
      pinMode(echo1, INPUT); 
     
      pinMode(trig2, OUTPUT); 
      digitalWrite(trig2, LOW); 
      pinMode(echo2, INPUT);
     
      pinMode(trig3, OUTPUT); 
      digitalWrite(trig3, LOW); 
      pinMode(echo3, INPUT);
     
      pinMode(trig4, OUTPUT); 
      digitalWrite(trig4, LOW); 
      pinMode(echo4, INPUT); 
     
      pinMode(pin1_moteur1,OUTPUT);
      pinMode(pin2_moteur1,OUTPUT);
      pinMode(pinP_moteur1,OUTPUT);
      pinMode(pin1_moteur2,OUTPUT);
      pinMode(pin2_moteur2,OUTPUT);
      pinMode(pinP_moteur2,OUTPUT);
     
      digitalWrite(pinP_moteur1,LOW);      // les moteur ne tournent pas
      digitalWrite(pinP_moteur2,LOW);
     
      digitalWrite(pin1_moteur1,LOW);
      digitalWrite(pin2_moteur1,HIGH);     // on initialise la direction des moteurs
      digitalWrite(pin1_moteur2,LOW);
      digitalWrite(pin2_moteur2,HIGH);
     
     
      Serial.begin(9600); 
    }
     
    void loop() 
    { 
     
    // calcul de la distance des capteurs a ultrasons.
     
      digitalWrite(trig1, HIGH); 
      digitalWrite(trig2, HIGH);
      digitalWrite(trig3, HIGH);
      digitalWrite(trig4, HIGH);
      delayMicroseconds(10); 
      digitalWrite(trig1, LOW); 
      digitalWrite(trig2, LOW); 
      digitalWrite(trig3, LOW); 
      digitalWrite(trig4, LOW);
     
      lecture_echo1 = pulseIn(echo1, HIGH); 
      cm1 = lecture_echo1 / 58; 
     
      lecture_echo2 = pulseIn(echo2, HIGH); 
      cm2 = lecture_echo2 / 58;
     
      lecture_echo3 = pulseIn(echo3, HIGH); 
      cm3 = lecture_echo3 / 58;                                          // ou on peut aussi ecrire cm = lecture_echo * 0.017
     
      lecture_echo4 = pulseIn(echo4, HIGH); 
      cm4 = lecture_echo4 / 58;
     
      Serial.print("Distance 1 : "); 
      Serial.println(cm1); 
      delay(300);                                                         //delay de base = 1000 : au cas ou 
     
      Serial.print("Distance 2 : "); 
      Serial.println(cm2); 
      delay(300);
     
      Serial.print("Distance 3 : "); 
      Serial.println(cm3); 
      delay(300);
     
      Serial.print("Distance 4 : "); 
      Serial.println(cm4); 
      delay(300);
     
    }
    il n'est pas très complexe mais j'aimerais juste savoir si il va bien calculer les distances etc...
    Cordialement
    ravenYT

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 604
    Points : 56 721
    Points
    56 721
    Billets dans le blog
    40
    Par défaut
    Bonsoir,

    le programme ne marchera pas

    Les trains d'ultrasons sont déclenchés quasi-simultanément, mais la fonction pulsein() est bloquante, c'est-à-dire qu'elle attend le retour de l'écho.

    Le premier pulsein attend donc le retour de l'écho du capteur 1, mais pendant ce temps-là les ultrasons des autres capteurs continuent de courir, et quand tu arrives au second pulsein pour lire l'état du capteur 2, il est probable que son écho est revenu à ses oreilles depuis longtemps

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    D’accord Merci pour votre réponse
    Comment pourrais je donc faire pour calculer les distances en même temps ?
    Merci encore
    Cordialement

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 604
    Points : 56 721
    Points
    56 721
    Billets dans le blog
    40
    Par défaut
    Il faut attendre que l'écho du capteur soit revenu avant de déclencher l'envoi du train d'ultrasons par le capteur suivant.

    Mais ce n'est pas "en même temps", avec pulseIn() c'est "chacun son tour".

    PS : tu devrais modifier le titre de la discussion, ta question concerne les capteurs de distance et aucunement sur les moteurs.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ok j’ai compris désormais
    Merci beaucoup pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/01/2011, 13h13
  2. Réponses: 3
    Dernier message: 22/12/2007, 21h23
  3. Réponses: 10
    Dernier message: 27/03/2007, 21h40
  4. Réponses: 8
    Dernier message: 26/03/2007, 10h43
  5. Un programme "p2p" pour échanger des fichiers text
    Par Cthulhu 22 dans le forum Développement
    Réponses: 2
    Dernier message: 17/02/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo