Aller au contenu


Contenu de 3721

Il y a 23 élément(s) pour 3721 (recherche limitée depuis 22-avril 13)


#101303 Base Alu ( ou la galère 2)

Posté par 3721 sur 08 janvier 2019 - 07:57 dans Robots roulants, chars à chenilles et autres machines sur roues

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:




#101300 Base Alu ( ou la galère 2)

Posté par 3721 sur 08 janvier 2019 - 04:36 dans Robots roulants, chars à chenilles et autres machines sur roues

Salut a tous ,

Alors voila j'ai fait une nouvelle base pour mon robot : 300 mm de long ,190 de large et 5 de haut le tout en alu ,avec les moteur et encodeur de la boutique , toujours un moteur pas a pas pour la tourelle et une Arduino Uno classique en microcontrôleur  :

IMG_20190107_160619.jpg IMG_20190107_160626.jpg IMG_20190107_160744.jpg

 

 

Pour couper la plaque d'alu j'ai d'abord décider de la modéliser en 3D sur fusion 360 et après de la faire découper au plasma (je pouvais :beach: :Koshechka_08:) mais trop pas trop le temps je voulais avoir assez vite mon chassie donc j'ai passé le fichier 3D au format PDF et je l'ai imprimer pour après le calquer au pointeau sur ma plaque .

Mais la petit problème, je pense qu'en le mettant en PDF le fichier a diminué de taille donc pratiquement toute les mesure était fausse, c'est pour cela qu'il y a un petit fail sur les troues pour le moteur droit . Avez vous une Idée d’où peut venir cette erreur si elle vous est déjà arrivé??

 

Maintenant que le chassie est découpé, percé, taraudé, que les fils sont branchés ... Il me reste juste a faire un petit adaptateur pour ma Tourelle et un j'ai petit souci d'alimentation (je créerais un autre sujet pour régler ce dernier). Je suis passé sur la programmation et premièrement réussir à implémenter le PID et la je bloque ...... je me suis beaucoup aidée du code de MIKE118 sur son robot de dernière minute pour la coupe de robotique ( désoler j'ai même un "peu" copier"), c'est le seul code assez complet et avec la librairie PID_V1 que je comprenais.

Pour l’instant le voici même s'il est pas du tout terminé:

#include <Stepper.h>
Stepper Motor (200,A0,A1,A2,A3);

const byte MotorRightEnable = 5;
const byte MotorRight1 = 8;
const byte MotorRight2 = 9;
const byte MotorLeftEnable = 6;
const byte MotorLeft1 = 10;
const byte MotorLeft2 = 11;

const byte EncodeurDroitA = 2;
const byte EncodeurDroitB = 4;
const byte EncodeurGaucheA= 3;
const byte EncodeurGaucheB= 7;

const byte TrigPin = 12;
const byte EchoPin = 13;
const byte MaxDist = 200;
#include <NewPing.h>
NewPing Tourelle(TrigPin,EchoPin,MaxDist);

#include <PID_v1.h>
#include <TimerOne.h>
double SetPointDroit, InputDroit, OutputDroit;
double SetPointGauche, InputGauche, OutputGauche;
double Kp = 0,Ki =0, Kd = 0;
PID PIDDroit(&InputDroit, &OutputDroit, &SetPointDroit, Kp, Ki, Kd, DIRECT);
PID PIDGauche(&InputGauche, &OutputGauche, &SetPointGauche, Kp, Ki, Kd, DIRECT);

volatile byte CountDroit = 0;
volatile byte CountGauche = 0;
volatile double SpeedDroit = 0;
volatile double SpeedGauche = 0;

void setup() {
  pinMode(EncodeurDroitA,INPUT_PULLUP);
  pinMode(EncodeurDroitB,INPUT_PULLUP);
  pinMode(EncodeurGaucheA,INPUT_PULLUP);
  pinMode(MotorRightEnable,OUTPUT);
  pinMode(MotorLeftEnable,OUTPUT);
  pinMode(EncodeurGaucheB,INPUT_PULLUP);
  pinMode(MotorRight1,OUTPUT);
  pinMode(MotorRight2,OUTPUT);
  pinMode(MotorLeft1,OUTPUT);
  pinMode(MotorLeft2,OUTPUT);
  pinMode(TrigPin,OUTPUT);
  pinMode(EchoPin,INPUT);
  pinMode(A0,OUTPUT);
  pinMode(A1,OUTPUT);
  pinMode(A2,OUTPUT);
  pinMode(A3,OUTPUT);
  
  Serial.begin(9600);
  Motor.setSpeed(240);
  
  attachInterrupt (0, CounterDroit, CHANGE);
  attachInterrupt (1, CounterGauche, CHANGE);
  
  Timer1.initialize (80000);  
  Timer1.attachInterrupt( timerIsr );
  
  InputDroit = 0;
  SetPointDroit = 0;
  InputGauche = 0;
  SetPointGauche = 0;
  
  PIDDroit.SetMode(AUTOMATIC);
  PIDDroit.SetOutputLimits(-255, 255);
  PIDGauche.SetMode(AUTOMATIC);
  PIDGauche.SetOutputLimits(-255, 255);
}
void loop() {


}    
void CounterDroit(){
  byte state =PIND;
(((state >> EncodeurDroitA) & 1)^((state >> EncodeurDroitB) & 1)) ? CountDroit-- : CoutDroit++; 
}
void CounterGauche(){
  byte state =PIND;
(((state >> EncodeurGaucheA) & 1)^((state >> EncodeurGaucheB) & 1)) ? Countgauche++ : CountGauche--; 
}
void timerIsr (){
  SpeedDroit = CountDroit;
  CountDroit = 0;
  Speedgauche = CountGauche;
  CountGauche;
}

Donc le moment des questions :ignat_02: :

1)sur le code de MIKE118, le dernier  code (https://www.robot-ma...upe-de-france)

Il utilise un contrôleur de moteur avec seulement 2entrées alors que moi j'utilise le L293D qui en utile 3 :2 pour la direction et 1en PWM pour la vitesse . Comment pourrais je faire pour adapter mon code?? un truc comme sa :

void setMotorRigh (int speeds,boolean reverse){
  analogWrite(motorRighEnablePin,speeds);
  digitalWrite(motorRighIn1,reverse);
  digitalWrite(motorRighIn2,! reverse);

2) pour avoir la vitesse le code n'a-t-il pas besoin du diamètre des roue ? Je parle uniquement pour l'asservissement en vitesse  ou la vitesse est juste en tours par minute/seconde?

 

3) Est -ce une bonne idée de partir sur le code de la coupe de robotique pour faire mon code??Avez vous des exemples plus explicites même si j'ai très bien compris celui ci ?

 

Merci de vos réponse

j’espère avoir été assez compréhensif :thank_you:

:bye:

 




#101298 Robot en mecanno avec une tourelle

Posté par 3721 sur 07 janvier 2019 - 10:57 dans Robots roulants, chars à chenilles et autres machines sur roues

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




#101296 Robot en mecanno avec une tourelle

Posté par 3721 sur 07 janvier 2019 - 10:30 dans Robots roulants, chars à chenilles et autres machines sur roues

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:




#97141 trouver un encodeur pour l'adapter sur des axes Meccano

Posté par 3721 sur 06 juillet 2018 - 09:12 dans Mécanique

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??




#96606 Robot en mecanno avec une tourelle

Posté par 3721 sur 24 juin 2018 - 05:14 dans Robots roulants, chars à chenilles et autres machines sur roues

: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




#96605 trouver un encodeur pour l'adapter sur des axes Meccano

Posté par 3721 sur 24 juin 2018 - 04:39 dans Mécanique

salut

 

Forthman

Posté 18 juin 2018 - 10:29

quelques remarques  :

- je ne sais pas quel logiciel tu utilises, mais tes rayons ne sont pas réguliers, il y a des défauts sur les extrémités, et les facettes sont plutôt grossières

- il vaudrait mieux garder une couronne tout le tour histoire de garder un peu de solidité

- le perçage de la vis tu peux oublier, il vaut mieux le faire à la main après

- et tu avais dit que l'axe n'était pas rond

 

ci joint un truc fait à l'arrache avec des cotes au pif (en essayant de respecter celles de ton fichier STL)

 

 

-alors pour le logiciel j'utilise Sketchup et c'est vrai que les ronds ne sont absolument pas ronds :crazy: mais ces le seul que je connais un peu  ...peut tu m'en conseiller un simple et gratuit??

 

-pour les axes il ne sont pas rond mais j'ai vue que tous ce qui faisait des pièces Meccano en 3D faisait un axe rond qu'il bloquais avec une petite vis en travers. le troue sur le coter l’imprimante ne peut pas le faire ?

 

voila j'essaye de modéliser un truc en essayantde suivre vos conseil et faire un truc rond!!!

 

 merci

ps :ta pièce jointe marche pas




#96515 trouver un encodeur pour l'adapter sur des axes Meccano

Posté par 3721 sur 19 juin 2018 - 08:00 dans Mécanique

pour le support........ bah bonne question.............

je pensais vue que les veroboard sont deja des troue je les reperce et je les ajuste a mon chassie avec des goupilles ,solution possible??

 

sinon voila mon fichier 3D je l'ai a peine modifier sur un truc et sinon vous semble t-il bon?

 

 

l'autre pièce est celle dont je me suis inspiré (celle avec les troues)

 

j’attends vos réponse et conseil et je vois pour la commande avec les fourches et tout

 

merci

 




#96480 trouver un encodeur pour l'adapter sur des axes Meccano

Posté par 3721 sur 17 juin 2018 - 06:11 dans Mécanique

Sa y est j’ai fini la modélisation de la roue dentée,par contre je n'ai pas trop suivi tes conseil et je me suis inspirer d'une pièce un Meccano que j'ai trouvé sur internet.

donc voila ce que sa donne, la pièce Meccano initiale est a droite :

 

http://www.robot-maker.com/shop/calculer-volume-stl/upload/rouedentee.stl

 

 

ma pièce fait 1,5mm d’épaisseur donc sa laisse une marge de 1,5mm avec les bords de la fourche

les créneaux font environ 2,72 mm pour 6,92 mm de long

je l'ai dimensionné en me servant de la datasheet

 

 

6 : tu auras 4 fourches pour tes deux moteurs, deux seront branchées sur les pins 2 et 3 de ta arduino uno et les deux autres seront branchés sur les pins 4 et 7 =)

donc 2 fourches par roue dentée ou 4 roue dentée? :crazy:

 

et vue que je n'ai pas vue les fourches sur la boutique a quelle prix sont elle ?

et a combien serai le "lot" ? frais de port??

 

pardon pour ces question mais je préfère savoir

 

merci




#96446 trouver un encodeur pour l'adapter sur des axes Meccano

Posté par 3721 sur 16 juin 2018 - 10:04 dans Mécanique

ta proposition me plait beaucoup :yahoo: vue que je n'ai rien réussi a bouger mais j'ai plein de question maintenant: :pardon:

 

1-a quoi sert la  résistance? et de combien faut il quelle soit ? j'en ai plusieurs du kit Arduino

 

2-pour les fichiers 3D est ce que je peux utiliser le logiciel Google Sketchup  vu que je sais "un peu" m'en servir? =)

 

3-quelles sont les mesures des fourches pour faire quel que  chose qui va avec?

 

4-a ton avis il faudrait qu'il y ait combien de dent sur le disque pour faire un simple asservissement?

 

5- des conseil pour les dessins en 3D ? j'ai vue qu'il y avait des pièce deja faite en Meccano sur les bibliothèque Sketchup ou thingiverse donc je n'aurais pas a m’embêter a refaire les mesures des trous.

 

6- avec des fourches optiques comme celle la il y a combien de sortie? 2 par fourches? et si oui puis je en brancher sur des pins analogiques ou que sur des interruptions?

 

7- peut on imprimer beaucoup en 15 minutes?

 

Voila désoler si les questions ne sont pas toute au bon endroit mais comme elle vont avec le sujet et ta proposition....

j'ai quand même fait des petites recherches mais je verrais pour programmer et jouer avec mes comptes tour après, mais

 le souci pour l'instant est de résoudre mes petit bug :dash2:  que je pense régler dans le weekend en faisant des test.

 

merci beaucoup :thank_you:




#96352 trouver un encodeur pour l'adapter sur des axes Meccano

Posté par 3721 sur 13 juin 2018 - 06:07 dans Mécanique

enfaite on pourrais aussi les prendre a l'intérieur des roue si tu regarde bien la 2éme photos en dessous du premier bloc de réductions il y a l'axe des roue qui passe ,peut être la?

 

pour le pignon avoir j'essayerai ce weekend pour voir si il n'y a pas trop de frottement mais sa ne change pas le problème de trouver le bon encodeur.

pour ta 3éme solution je sais pas trop les dents ne sont pas très grande je ne sais pas si cela suffirai........la je demande a se qui en on deja pratiqué.

 

merci quand même tu ma donné une bonne idée ;)




#96349 trouver un encodeur pour l'adapter sur des axes Meccano

Posté par 3721 sur 13 juin 2018 - 05:26 dans Mécanique

Sympa sympa!!!

je dirai très embêtant a construire pour pas dire autre chose... et je ne conseillerai pas trop de faire des robot comme celui ci en Meccano,beaucoup de contrainte mécaniques et de frottements, mon "machin" fait quand même 1,8kg. Par contre je suis fier d'avoir réussi a adapter tous ce que je voulais y mettre dessus sans trop de problème et aucun perçage et il n'y a aucune pièce inutile toute serves a tenir un truc ou un bidule.=)

 

bref voila de nouvelle photos pour mieux voir les axes et qu'on ne peut absolument pas bouger les moteur :

IMG_20180612_175411.jpg

IMG_20180612_175437.jpg

IMG_20180612_175502.jpg

IMG_20180612_175511.jpg

IMG_20180612_175538.jpg

 

des suggestions???




#96346 Robot en mecanno avec une tourelle

Posté par 3721 sur 13 juin 2018 - 02:03 dans Robots roulants, chars à chenilles et autres machines sur roues

Non,ce n'est pas un grave problème R1D1, mais parfois quand je fais des test en restant avec le câble USB j'ai le robot qui me lâche des mains a cause des moteur qui se lance donc je voulais savoir ...

je me doutait qu'il me faudrait rajouté un bouton mais il me reste plus que RX et TX de libre et comme je fais encore beaucoup de test.

 

 

 

Maintenant que j'ai pu voir le code dans l'ensemble c'est pas trop mal ! Par contre il y a un truc qui me chagrine à la fin : 

 

distanceMax == donneeCapteur[indiceMax][0];//association de la distance maxtrouver
angleMax == donneeCapteur[indiceMax][1];//pareil mais avec le tableau rempli dans le setup

 

 

=> Quelle est la différence entre " == " et " = " ? :P

 

Pas sûr que ça résolve tout tes problèmes mais déjà tu peux corriger ça et expliquer les problèmes qui te reste =)

 

 

le problème c'est que la différence je l'ai pas retenue :ignat_02: et que je me demande tous le temps =)

donc je vais changer et essayer.

 

 

 

ps:merci a celui qui a modifié le code

 

 




#96323 Robot en mecanno avec une tourelle

Posté par 3721 sur 12 juin 2018 - 06:16 dans Robots roulants, chars à chenilles et autres machines sur roues

OK cool ne t'inquiète pas ton message était correcte c'est moi qui me suis un peu emballes.

 

Donc pour le code je refais ma 1er techniques désoler si vous devez le télécharger:

Fichier joint  voituremecanoV1.ino   3,88 Ko   216 téléchargement(s)

 

pour la question 2 merci sa ma sauvé la vie dans un autre programme

et pour la 4 je vais me faire des petits test.

 

Sinon un nouvelle question (je pense que sa va devenir un routine pour moi et sa doit être pas cool pour vous)

 

1-y a t-il une technique pour quand on utilise le moniteur série pour le débogage de mettre ou pas les messages ,une fonction booléenne  avec un vrai si on les affiche et faux si non??

 

encore merci

 

le code : 

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

int donneeCapteur[19][1];//tableau pour les angles de rotation du robot en fonction de la plus grnde distance trouvée avec la tourrelle
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++){
  donneeCapteur[x][1] = donneeCapteur[x-1][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(donneeCapteur[x][1]); //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);
}
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 ladistance la plus grande
  for(byte a = 0; a <= 19;a++){//tourner la tourelle en mesurant
    Moteur.step(390);
    mesure();
    distance = donneeCapteur[a][0]; //la distance est socker dans la 1er colonne du tableau :je pense qu'ily a un bug ici
    Serial.println(donneeCapteur[a][0]);  
  }
  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][0] < donneeCapteur[c][0] ){
    indiceMax = c;
  }
  Serial.println(indiceMax);
 }
distanceMax == donneeCapteur[indiceMax][0];//association de la distance maxtrouver
angleMax == donneeCapteur[indiceMax][1];//pareil mais avec le tableau rempli dans le setup
Serial.print("a");
Serial.println(angleMax);
Serial.print("b"); 
Serial.println(distanceMax);
}




#96322 trouver un encodeur pour l'adapter sur des axes Meccano

Posté par 3721 sur 12 juin 2018 - 06:00 dans Mécanique

Bonjour,

Le but de ce topic ,est comme évoqué dans le titre et dans mon autre sujet sur on robot en Meccano, de trouver des encodeur a adapter sur le axes Meccano.

Je n'ai pas envie de changer les moteur car j'ai deja eu du mal a les mettre et cela voudrai dire changer tout mon châssis.

 

le problème c'est que ces axes sont un peu triangulaire et assez gros (je peux pas mesurer leur diamètre maintenant mais bientôt).

J'ai eu l'idée il y a quelques jour de faire une sorte d'adaptateur imprimée en 3D mais je ne pas d'imprimante par contre j'ai vue que le forum proposée des services.

 

les photos des Axes:

20180513_121023.jpg

20180513_121108.jpg

 

Pensez vous que la solution avec l'imprimant 3D est viable sinon connaissez vous des encodeur avec des axes aussi gros ??

j'ai fait des recherche sur internet mais il  y a beaucoup de choix et je ne sais pas vers quoi me diriger.




#96320 Robot en mecanno avec une tourelle

Posté par 3721 sur 12 juin 2018 - 05:02 dans Robots roulants, chars à chenilles et autres machines sur roues

Merci pour ta réponse même si elle ma un peu refroidit.

Bref pas grave le  code est il bon?

j'ai numérotes les question et je les reposerai autre pars.




#96292 Robot en mecanno avec une tourelle

Posté par 3721 sur 11 juin 2018 - 03:38 dans Robots roulants, chars à chenilles et autres machines sur roues

Salut a tous les maker,

je reviens vers vous avec mon robot tourelle pour poser de nouvelle question est essayer de résoudre un bug très bizarre que j'ai.

 

donc ce bug va avec mon tableau a 2 colonne et 20 ligne ;le problème vient  quand je remplie ma 2éme colonne dans mon setup et que après quand j'assigne des valeurs de mon capteur a la 1er colonne et que je veux les afficher sur le moniteur série il m'affiche presque toute les valeur de la 2éme colonne alors qu'il n'y a aucun lien entre les deux.

voici mon code et des screenshots du moniteur série pour mieux comprendre:

 

je l'ai commentée cette fois    :)  https://create.ardui...ecanoV1/preview

et les photos a comprendre avec le programme

Capture d’écran (7).png      la première suite de nombre correspond au valeur de la  colonne 2 qui ne devrai pas être la

Capture d’écran (8).png

 

avez vous une idée pour le résoudre?? :help:

 

Et maintenant les question:

 

1-vue que mon robot ne va absolument pas droit et que j'aimerais lui faire plein d'autre chose après connaissez vous un encodeur simple, pas trop cher et adaptable sur des axes assez gros comme ceux des meccano vu que je n'ai pas envie de changer de moteur car il faudrait alors changer tout mon chassie ??

 

2-avez vous une solutions pour commentez et décommenter facilement vos programme?

 

3-avez vous une solution pour quand on téléverse un programme vers l’Arduino éviter que le programme d'avant ce lance?

 

4- une dernière pour la route,quand vous faite un programme avec des donnée a changer régulièrement vous faites comment pour éviter de le re-téléverser a chaque fois

 

merci de vos réponse

 

ps: vue que vous êtes en trains de remoduler le forum  pourquoi ne pas faire une sort de chat en direct pour poser des questions simple pour ne pas avoir a faire tout un topic .

 

Voila modifié merci quand même et désoler si ilya beaucoupde question mais bon je suis curieux et débutant.




#95502 Robot en mecanno avec une tourelle

Posté par 3721 sur 17 mai 2018 - 04:22 dans Robots roulants, chars à chenilles et autres machines sur roues

Super merci Mike et Jekert
Je ferai des teste ce weekend et je revient vers le forum pour vous montrer mes avancer ou poser encore des questions



#95462 Robot en mecanno avec une tourelle

Posté par 3721 sur 15 mai 2018 - 07:28 dans Robots roulants, chars à chenilles et autres machines sur roues

super Merci pour tes réponse rapide Mike118 .

Je vais y réfléchir un petit peu mais c'est vraiment cool de ta par.

Par contre j'ai quatre nouvelle question: (je suis curieux).

-que veut dire:"uint8_t" ??? demande le Mega débutant que je suis

-donc dans mon setup j'enregistre avant tout les angle c'est sa?

-Ton morceau code veut dire que je n'utilise plus la fonction max?

-Et comment a tu fais pour insérer ton code dans la réponse ?

 

Merci encore pour les réponse et je pense tester toutes les modification ce weekend




#95460 Robot en mecanno avec une tourelle

Posté par 3721 sur 15 mai 2018 - 04:02 dans Robots roulants, chars à chenilles et autres machines sur roues

Pourquoi faire un tableau en deux dimensions ? 

Pourquoi ne pas placer le capteur droit devant, mesurer en continu la présence éventuelle d'un obstacle, si obstacle on s'arrête, on bouge la tourelle à droite et à gauche, on regarde quelle valeur et la plus grande et on tourne du côté où la valeur est la plus grande ... Simple et efficace qu'en dis tu ?

 

Mouais c'est vrai mais autant faire tourner la tourelle a 360° non ? j'en ai la  possibilité.

 

Par contre pour le Tableau je voulais d'en coté récupérer les valeurs du capteur et de l'autre les assignées a un temps ou un angle que je change en temps. Pour après pendants mon calcul de la plus grande valeur prendre toute la ligne avec et la valeur du capteur et le "temps" pour après faire un genre de "turnLeft(monTableau[20][1]" avec dans le 20 la valeur la plus grande et dans le 1 le "temps".

je ne sais pas du tout si cela est possible et j’espère que tu as compris mon explication un peu farfelue.

 

-Une dernière question mon code pour retrouver la plus grande valeur est-il bon?

 

Merci de ta réponse et j'essayerai de vous tenir au courant si j'ai réussi ce que j'aimerai.




#95428 Robot en mecanno avec une tourelle

Posté par 3721 sur 14 mai 2018 - 12:06 dans Robots roulants, chars à chenilles et autres machines sur roues

Bonjour a tous,

il y a quelques temps je me suis inscrit sur le forum pour poser des question quand j'en aurais besoin.Depuis j'ai crée mon premier robot sur roue avec un chassie en meccano car il y avait deja des moteur adaptées et plusieurs engrenages et courroies.

 

Mon robot est maintenant terminé mais je suis passé par  plusieurs galère avant de le finir : il-n’avait pas suffisamment de couples, les courroies patinait, après il y avait trop de frottement avec les pièces d'origine :dash2: .... Mais j'ai quand même réussi a adapter sur les meccano l’Arduino ,la roulette, le capteur (avec quelques petits trous.)

je suis un débutant en programmation (j'ai suivie les cours du kit de base et sur le blog d'Eskimon)mais j'ai réussie a faire un programme simple ou le robot avance tant qu'il n'y a pas d'obstacle a moins de 30cm sinon il recule et tourne a gauche pendant X secondes.

Mais maintenant je veut faire tourner ma tourelle avec un moteur pas a pas que j'ai réussi a adapter mais je bloque sur certaines chose:

-faire tourner le moteur :facile

-mettre les valeur du capteur dans un tableau :facile

-comparer les valeur pour trouver la plus grande :pas facile mais je crois que j'ai trouver

-associer cette valeur a temps pour faire tourner le robot vers la valeur du capteur la plus grande :beaucoup chercher pas trouver (j'ai essayer avec un tableau a 2 dimension mais a chaque fois je bloque sur un truc).

 

voila le code :Fichier joint  voituremecanoV1.ino   2,18 Ko   265 téléchargement(s) désoler j'ai oublié de le commenter j'espère que vous le comprendrait ou je le reposterait .

 

et voici les photos:

20180513_121205.jpg

20180513_120954.jpg

20180513_121023 - Copie.jpg

20180513_121040.jpg

20180513_121108.jpg

 

 

merci d'avance pour vos réponses.

ps:désoler pour le fautes et poser vos questions si tout n'est pas clair.




#89345 Ma présentation

Posté par 3721 sur 27 octobre 2017 - 10:27 dans Et si vous vous présentiez?

Merci a tous pour vos réponses



#89302 Ma présentation

Posté par 3721 sur 26 octobre 2017 - 07:24 dans Et si vous vous présentiez?

Bonjour,
J'ai 14 ans j'habite a tahiti etje suis en 3emes.
Avec mon pere nous aimerions programmer et fabriquer un (des)robots.j'aimerais savoir quel sont les base sachant que nous ne connaissons rien .moi j'ai projet robot cette année avec ma classe et nous allons fabriquer des robot avec arduino.
C'est cela qui nous a donné l'idée de notre projet.

Merci dd vos réponse