Aller au contenu


Photo
- - - - -

probleme avec tableau

utilisation dun tableau

  • Veuillez vous connecter pour répondre
3 réponses à ce sujet

#1 Henri4

Henri4

    Nouveau membre

  • Membres
  • 6 messages

Posté 12 novembre 2018 - 03:11

Hello les Makers,

 

J'aurai besoin de votre aide pour faire le programme suivant:

quand le robot se trouve à une distance inferieure a 50 centimetre d'un mur,il met en route 5 moteur .

voila ce que j ai fait =



struct tableauTemps {
  byte numSortie;
  unsigned long debut;
  unsigned long fin;
  byte etat;
};

tableauTemps dureeMarche[] = {
  {7, 0, 1500, LOW},
  {8, 1500, 10000, LOW},
  {9, 10000, 12500, LOW},
  {10, 12500, 15000, HIGH},
  {11, 15000, 18000ul, HIGH}
  };

const byte nOmbreUniteTableau = sizeof(dureeMarche) / sizeof(dureeMarche[0]);

unsigned long limiteMax;

void setup() {
  Serial.begin(115200);
  for (byte n = 0; n < nOmbreUniteTableau; n++) {
    pinMode(dureeMarche[n].numSortie, OUTPUT);
    
    digitalWrite(dureeMarche[n].numSortie, dureeMarche[n].etat);
  }

  limiteMax = 1000; // on fait comme si on est descendu  en dessous de 50cm à cet instant précis
}

void loop()
{
 }

J'ai commencer , mais je ne sait pas quoi mettre dans le loop .

Quelqu'un de competant peut il me venir en aide je suis debutant

Merci



#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 13 novembre 2018 - 02:13

Si tu veux que tant que ton robot et proche du mur tes moteurs seront allumé, et que dès qu'il n'est plus proche du mur les moteurs s'éteignent ton loop peut ressembler à ceci : 


 

void loop() {
  if(distance()<50) {
   mettreMoteursEnRoute();
  } else {
   arreterMoteurs();
  }
}

Dans ce cas il te faut donc faire les 3 fonctions 
 

distance() => Qui doit te retourner la valeur en cm 
mettreMoteursEnRoute() => Qui va allumer les moteurs 
arreterMoteurs() => Qui va arrêter tes moteurs 
 
Si tu utilises un capteur ultrasons HCSR04 pour la fonction pour mesurer la distance tu as un exemple de code donné sur la fiche produit =)

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#3 Henri4

Henri4

    Nouveau membre

  • Membres
  • 6 messages

Posté 13 novembre 2018 - 10:24

Bonsoir,

Merci pour ta réponse,

cependant ce qui me pose problème c'est que tous les moteurs ne doivent pas s'allumer en meme temps,mais l'un après l'autre.

Peux-tu me donner des conseils .

Bonne soirée



#4 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 14 novembre 2018 - 03:35

Bonsoir,

Merci pour ta réponse,

cependant ce qui me pose problème c'est que tous les moteurs ne doivent pas s'allumer en meme temps,mais l'un après l'autre.

Peux-tu me donner des conseils .

Bonne soirée

 

dans ce cas là sans description plus précise de ce que doivent faire tes moteurs je te dirais de faire un truc du genre :

void loop() {
  if(distance()<50) {
   cycleMoteurs();  //  fonction qui gère l'ensemble du cycle allumage et extinction du ou des moteurs 
  } 
}

et si tes moteurs doivent s'allumer  pendant un certain temps et s'éteindre les uns après les autres ta fonction cycleMoteurs peut ressembler à un truc du genre : 

void cycleMoteurs() { 
 for( uint8_t i = 0; i < NBMOTEURS; i++) {
  allumerMoteur(i); 
  attendreDelaisMoteur(i); 
  eteindreMoteur(i);
 }
}

 

 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users