Aller au contenu


3721

Inscrit(e) (le) 26 oct. 2017
Déconnecté Dernière activité juin 04 2020 07:16
-----

Messages que j'ai postés

Dans le sujet : Base Alu ( ou la galère 2)

08 janvier 2019 - 07:57

Merci

Normalement pour les photos la c'est bon.

 

 

 

après avoir ajouté les #define manquant et inverser le sens pour les fonctions reculer, et tout le reste du code marchera ... car les fonctions d'adaptation seront remplacée! Et ainsi pas de changement de nom de fonction ou de fonctionnement

Je pense pas faire avec les #define je suis pas encore assez habitué et je vais simplement  refaire les fonctions reculer,avancer tourner ... a ma sauce en fonction aussi du L293D sa me permettra de mieux comprendre mon code aux lieu de faire un bête copier coller.

 

Par contre pour l'impression j'ai vraiment fait attention de mettre tous mon schéma a l'échelle c'est pour  cela que sa ma autant surpris .

Après j'ai pris ton code car il me paraissait vraiment complet et le comprennait facilement .

 

En attendant l'avis des un ou le passage des autres je retourne essayer de comprendre le PID en version linéaire et angulaire où la c'est le gros trou.... 

Sur ce bonne nuit ou journée :thank_you:


Dans le sujet : Robot en mecanno avec une tourelle

07 janvier 2019 - 10:57

je pense que saurai été beaucoup trop compliqué et j'étais partis sur une mauvaise base donc j'ai tous changer et le nouveau résultat et vraiment top ..

j'écris le new sujet et je le montre


Dans le sujet : Robot en mecanno avec une tourelle

07 janvier 2019 - 10:30

Bonjour a tous ,

Cela fait très longtemps que je ne suis pas venu posé mes questions ici mais me revoilà . enfin..

J'ai décidé d'abandonné le robot en Meccano pour plusieurs raison : impossibilité de mettre des encodeur sur les moteur , moteur pas du tout assez puissant même avec des réductions, pas assez de place .... donc j'ai décidé de me faire une nouvelle base avec des bons moteurs ( de la boutique)^^. Mais avant je tenais a dire les avantages d'une base Meccano : facile a créer , plein de configuration surtout si on a deja les boites et de l'imagination ;) , il est facile d'adapter une Arduino et même un capteur Ultrason .

 

Donc voila on j'ouvre un nouveau sujet pour mes questions :crazy:


Dans le sujet : trouver un encodeur pour l'adapter sur des axes Meccano

06 juillet 2018 - 09:12

salut tous le monde

je pense enfin avoir terminé la pièce.

donc la voici :

 

 

ces dernier temps je n'ai pas trop eu le temps d'avancer sur le robot mais j'ai pu finir cette pièce et corriger le bug que je présentai sur l'autre sujet et  vu que je pars pendant 2 Semaines....

si la pièce n'est pas bonne je la referait sur fusion360  je pense car aucun autre n'ont autant d'outils que SKETCHUP mais la version d'essai de celui ci se fini bientôt.

Sinon pour le filetage de la vis j'en sais absolument rien c les vis classique de Meccano qui ont le même diamètre mais pas la même longueur.

 

merci encore

 

ps :j'ai trouvé pour faire des axes bien rond et est ce que une petite pièce comme sa se perce facilement??


Dans le sujet : Robot en mecanno avec une tourelle

24 juin 2018 - 05:14

:dash2: :dash2: :dash2: .........................

salut

j'ai suivi tes conseil Mike118 mais sa marche toujours pas ,j'ai bien vérifié tous mes "=="mais j'ai le même bug .

 

j'ai essayé de mettre deux tableau au lieu un en 2D , donc sa me fait un tableau ou je stocke dans mon setup tous mes angle pour la rotation du robot et l'autre ou je stocke mes mesure quand la tourelle tourne (c'est la que je pense qu',il y a un problème).

 

je suppose que c'est la car quand je fais tourner la tourelle je lui demande de m'afficher les valeur du capteur mais il ne me renvoie que "0" alors qu'l devrai me renvoyé les valeur du capteur

 

voici le code de nouveaux avec les modifs:

#include <Stepper.h>
Stepper Moteur (200,10,11,12,13);//moteur pas a pas de récuperation pour la tourelle 

int donneeCapteur[19];//tableau pour les angles de rotation du robot en fonction de la plus grnde distance trouvée avec la tourrelle
int angleRotation[19];
uint8_t indiceMax = 0;//variable pour le calcul de la plus grande valeur de la tourrelle
uint8_t angleMax;//variable pour l'angle max trouver dans le calcul
uint8_t distanceMax;//pareil mais pour la distance

const byte motorLeftEnablePin = 3;//pins de connexions du oteur gauche
const byte motorLeftIn1 = 2;
const byte motorLeftIn2 = 4;

const byte motorRighEnablePin = 5;//pins de connexions du moteur droit
const byte motorRighIn1 = 6;
const byte motorRighIn2 = 7;

const byte trigPin = 8;//pins pour la sortie du capteur ultason  
const byte echoPin =9;//pins pour l'entrer du capteur
long distance,duree,maximum;//variable pour la mesure de la distance

void setup() {
  for(byte i=2;i<= 8;i++){
    pinMode(i,OUTPUT);
  }
pinMode(9,INPUT);
Serial.begin(9600);

Moteur.setSpeed(240);

 for(byte x=0;x <=19;x++){
  angleRotation[x] = angleRotation[x-1] + 164;//remplissage de la 2éme colonne du tableau pour définir les anglesmax ,le robot fait un tour en 3280ms donc 164 pour 18° car 20mesure
  Serial.print("azerty");
 Serial.println(angleRotation[x]); //pour vérifir
 } 
}
void loop() {

 mesure();
 
 if(distance <= 25){
  mesure();
  if(distance <= 25){  
  arret();
 tournicotit();  
//recule(255);
//delay(1500);
 turnRigh(angleMax);
  }
 }
  
else{
  avance(255);
 }
}
void mesure(){//code pour la mesure de la distance
digitalWrite(trigPin,LOW);
  delayMicroseconds(10);
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(10);
  duree = pulseIn(echoPin,HIGH);
  distance = duree*340/(2*10000);
 /* Serial.print(distance);
  Serial.print("cm");
  Serial.print(duree);
  Serial.println("ms");*/
  if(distance > 250){//pour éviter des valeur éronnée
    distance = 200;
  }
delay(50);
return distance;
}
void setMotorLeft (int speeds ,boolean reverse){//initialisation des moteur avec la vitesse et le sens
  analogWrite( motorLeftEnablePin,speeds);
  digitalWrite(motorLeftIn1,reverse);
  digitalWrite(motorLeftIn2,! reverse);
}
void setMotorRigh (int speeds,boolean reverse){
  analogWrite(motorRighEnablePin,speeds);
  digitalWrite(motorRighIn1,reverse);
  digitalWrite(motorRighIn2,! reverse);
}
void turnRigh (int Stop){//pour torner a gauche
  setMotorLeft(255,true);
  setMotorRigh(255,false);
  delay(Stop);
  setMotorLeft(255,true);
  setMotorRigh(255,true);
}
void turnLeft (int Stop){//et a droite
  setMotorLeft(255,false);
  setMotorRigh(255,true);
  delay(Stop);
  setMotorLeft(255,true);
  setMotorRigh(255,true);
}
void avance (int speeds){//pout avancer 
  setMotorLeft(speeds,true);//-25 pour avancer en ligne droit car le moteur gauche tire trop
  setMotorRigh(speeds,true);
}
void recule (int speeds){
  setMotorLeft(speeds,false);
  setMotorRigh(speeds,false);
}
void arret (){
  setMotorLeft(0,true);
  setMotorRigh(0,true);
}
void tournicotit (){//pour faire tourner la tourelle en mesurant la disance pour apres aller vers la distance la plus grande
  for(byte a = 0; a <= 19;a++){//tourner la tourelle en mesurant
    Moteur.step(390);
    mesure();
    distance = donneeCapteur[a]; //la distance est socker dans la 1er colonne du tableau : BUG ICI????????!!!!!!!!!!!!
    Serial.println(donneeCapteur[a]);  
  }
  Moteur.step(-7800);//retour de la tourelle pour éviter de se bloquer avec les cables de capteur
   
  for(byte c = 0;c <= 19;c++){//pour calculer la plus grand valeur :marche mal,pas
  if( donneeCapteur[indiceMax] < donneeCapteur[c] ){
    indiceMax = c;
  }
  Serial.println(indiceMax);
 }
distanceMax = donneeCapteur[indiceMax];//association de la distance maxtrouver
angleMax = angleRotation[indiceMax];//pareil mais avec le tableau rempli dans le setup
Serial.print("a");
Serial.println(angleMax);
Serial.print("b"); 
Serial.println(distanceMax);
}

:help: :help:

 

merci encore