Aller au contenu


Photo
- - - - -

VBnette


26 réponses à ce sujet

#1 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 03 août 2012 - 11:06

salut

je crée ce sujet histoire de tenir au courant de mes avancé sur VbNette

aujourd'hui ou j'en suis :


le carter qui servira de bases est quasi fini je pofirnerai l'estetique plus tard,

j'ai recuperer 2 moteur de monte lit, ils ressemblent a des moteurs d'essui glace et on un couple important pour une conso relativement ridicule.

j'ai commandé une carte Commande SaberTooth 2x5A chez gotronic que j'ai enfin recu!

je suis en train d'installer les moteur sur la base, et je fixerais des roues de velo d'enfant (en 27 Cm de Diam) directement sur l'arbre du moteur

je plubirais plusieur photo une fois le tout assemblé

A+

#2 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 03 août 2012 - 10:51

allez je vais mettre une petite photo de VbNette

en ce qui concerne la coque elle est loin d'etre parfaite a l'heure ou je vous parle mais elle a le merite d'etre assez rigide

la conso des 2 moteurs (pour le moment alimenté en directe :Koshechka_08: , testé dans une leger monté) ne depasse pas les 2 A
je n'ai pa eu le temps de tester le driver moteur car j'ai galeré pour aligner l'axe des roue, une fois reussi, l'axe des roue a encore casser, et voila encore une heure a perdre pour bricoler un moyen de les fixer

bon maintenant le probleme d'axe est regler mais il ne roule pas tout a fait droit! avec tout ce bricolage j'ai reussi a tordre la plaque de fixation de la roue folle ce qui a pour effet de fausser la trajectoire de vebenette

vue l'lheure tardive je verrais ça plus tard
@+

Image(s) jointe(s)

  • DSC_0011.JPG


#3 thermo_nono

thermo_nono

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 825 messages

Posté 03 août 2012 - 11:36

ton souci de trajectoire m'amène à me poser une question :
ne serait-il pas possible de prévoir un petit potard en série avec chaque moteur pour compenser ce genre de petits soucis ?

#4 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 04 août 2012 - 07:36

ton souci de trajectoire m'amène à me poser une question :
ne serait-il pas possible de prévoir un petit potard en série avec chaque moteur pour compenser ce genre de petits soucis ?



la communication avec la crte driver sera en serie donc le potar c mort
je pense plutot qu'il faut regler le probleme mecanique
hier soir en allant ranger le robot je me suis rendu compte d'une chose: la plaque n'est pas vraiment tordu mais la roue a un sacres jeu sur son axe mobile
pour une roue payer 11 € chez leroy ça me fait bien chi...

ce qui me desépere le plus c'est que je ne pourrais pas y touché ce aujourd'hui pffff

#5 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 05 août 2012 - 10:41

salut a tous

j'ai commencer a branché la carte! elles sont juste genial

materiel utiliser : batterie 12v plomb

carte driver SaberTooth 2x5A

arduino mega

autonomie : 2h

je vous laisse voir la video ( enfin une fois fini d'uploader !)

les mouvement sont juste programmer il n'y a aucun IA!




#6 Microrupteurman

Microrupteurman

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 210 messages
  • Gender:Male
  • Location:Aquitaine,Gironde

Posté 05 août 2012 - 11:19

Impossible de voir la video !

 
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter :  https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/

Besoin d'une impression 3D grand format ? Contactez moi !
 


#7 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 06 août 2012 - 12:34

Impossible de voir la video !


moi je la vois... c'est quoi le message d'erreur?
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#8 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 06 août 2012 - 06:13

la video n'etait pas fini d'uplload

maintenat tout devraii fonctionné!

@mirorupteurman

la coque est en fibre de verre et elle est de ma conception

il reste des petit detaille a corriger mais ça reste correcte ,non?
j'ai voulus changer des robot tout rond ou tout carré

Edit: sur la vidéo le robot fait dans l'ordre :

il tourne, recule, attend 2s, avance , attends 2 seconde, etc... en boucle

je n'ai pas encors integres de codeur.

A+

#9 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 07 août 2012 - 03:59

Salut

j'ai develloppé l'interface de commande ( en VB bien sur!:Koshechka_08: )


Capture.PNG

j'ai mis un gros bouton Emergency Stop histoire de frimé un peu :)

elle se controle avec la souris, ou (et) le clavier

il y as comme un petit joystick dans le carré (mode souri)

les information vitesses que l'on peux voir serais plutot la puissance demander via la carte Controleur

elle est pas completement fonctionnel mais ça ne saurais tarder, il me manque de finalisé la synthax utilisé pour envoyé les commande a l'arduino



voila de ce qui est Vbnette aujourdui

A+

#10 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 08 août 2012 - 10:15

voila j'ai fait le code qui iras sur l'arduino voir PJ, enfin dire que je l'ai fait est un grand mots

je me suis inspiré du code de Luj de pobot en le modifiant au endroit qui m'interresse

je n'ai pas encore eu l'ocassion de le tester, je n'ai pas d'arduino sous la main

Fichier(s) joint(s)



#11 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 09 août 2012 - 07:31

salut

il est evident que le code que j'ai publier hier, est bourrer de faute et que par conséquent il ne fonctionne pas !

j'ai passé une bonne partie de ma soiré a le corriger, et j'ai fini par reussir a le compilé et a l'envoyer sur l'arduino
mais (il y a toujour un mais!) je n'arrive pas a recuperer les valeur envoyer

pour bien expliquer le principe, il s'agit d'envoyer a l'arduino une chaine de caractere de ce type : SG10D200

S pour start; G pour moteur gauche ; 10 pour la valeur de la puissance moteur demandé ; etc ...

l'arduino me retourne systematiquement 0

j'ai donc essayer de faire un bete copier coller du code originelle mais j'ai encore le meme probleme, il me retourne encore 0

j'avais deja rencontrer se probleme ici

mais visiblement la solution de l'epoque n'est pas la bonne

si hexa mail passe par la (je sais que tu la deja utilisé ^^) et que dans un de tes tirroir, tu aurais une solution pour moi?!

A+

#12 huntor

huntor

    Nouveau membre

  • Membres
  • 4 messages
  • Gender:Male

Posté 09 août 2012 - 08:37

Salut,

Juste en regardant vite fait le code on peut voir:
// End the array with a specific character (E=End)  
 // (means that you can't choose 'E' as a user meaning command  
 commande[indice] = 'E';

Donc si tu n'as pas le caractère 'E' à la fin de ta chaîne de caractère le programme risque de ne pas marcher.

#13 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 09 août 2012 - 08:41

Salut,

Juste en regardant vite fait le code on peut voir:

// End the array with a specific character (E=End)  
 // (means that you can't choose 'E' as a user meaning command  
 commande[indice] = 'E';

Donc si tu n'as pas le caractère 'E' à la fin de ta chaîne de caractère le programme risque de ne pas marcher.



j'avoue que je n'ai pas essayer
mais a l'epoque il n'etait pas necessaire de le mettre

autre info la vitesse de com est bien regler (9600 bauds sur la carte et le moniteur arduino )
franchement je ne comprend pas la cause

#14 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 09 août 2012 - 08:50

Salut !

Peux-tu mettre une version corrigée (c-à-d qui compile) histoire qu'on ne passe pas trop de temps à corriger ces problèmes là ? Je ne peux pas le tester dans la mesure où je n'ai pas de carte sous la main, mais je peux jeter un oeil. D'ailleurs, c'est quelle modèle d'Arduino comme cible ? (ça peut aider)
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#15 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 09 août 2012 - 09:16

Salut !

Peux-tu mettre une version corrigée (c-à-d qui compile) histoire qu'on ne passe pas trop de temps à corriger ces problèmes là ? Je ne peux pas le tester dans la mesure où je n'ai pas de carte sous la main, mais je peux jeter un oeil. D'ailleurs, c'est quelle modèle d'Arduino comme cible ? (ça peut aider)


se soir je metterais mon code en ligne mais l'idée serais de faire fonctionner plutot le code originelle ou si quelqu'un peut au moin l'essayer et me confirmer qu'il fonctionne


en tout cas merci de vos reponses


c'est une arduino mega rev3

#16 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 09 août 2012 - 09:31

Moi je dis que c'est à cause du VB :P


Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.


#17 seb03000

seb03000

    @pump_upp - best crypto pumps on telegram !

  • Membres
  • PipPipPipPipPip
  • 1 193 messages
  • Location:https://t.me/pump_upp

Posté 09 août 2012 - 09:45

Salut julkien bon j'ai testé le code que tu nous a demandé.

//valeur numérique à décoder des commandes spécifiques après   
	int value = 0;  
  	
	// où nous sommes actuellement dans la séquence de construction ou de décodage  
	int indice = 0;  
  	
	// la séquence de caractères, où est stocké ce que l'utilisateur veut 
	char commande[40]; // réduire la durée d'économiser de la mémoire (si nécessaire)
  	
	/** 
 	* 
 	*/  
	void setup()  
	{  
  	Serial.begin(9600);  
	}  
  	
	/** 
 	* 
 	*/  
	void loop()  
	{  
  	//Démarrer une nouvelle réception, reinit l'indice navigateur de la matrice
  	indice = 0;  
  	// Remplissez-en la séquence de caractères avec tous les caractères reçus  
  	while (Serial.available())  
  	{  
    	commande[indice++] = Serial.read();  	
  	}  
  	// Fin du tableau avec un caractère spécifique (E = Fin)  
  	// (ce qui signifie que vous ne pouvez pas choisir «ME» en tant que commande sens utilisateur) 
  	commande[indice] = 'E';  
  	
  	// Ne pas continuer la boucle si aucune commande (adapter à votre propre code)  
  	if (indice == 0) return;  
  	
    	// DEBUG affichage que d'une nouvelle séquence a été trouvé
   	// Serial.print ("> commande reçue, longueur =");
   	// Serial.println (indice);
  	
   	// Début de l'analyse du tableau de séquence  
  	indice = 0;  
  	while (commande[indice] != 'E')   
  	{  
    	//Reinit la valeur numérique
    	value = 0;  
    	//  
    	switch (commande[indice])  
    	{  
    	case 'S':  
      	Serial.println("> Start command.");  
      	break;  
    	case 'G':  
      	// Continuer à l'autre char (peut contenir la valeur numérique 
      	indice++;  
      	while (commande[indice] >= 48 && commande[indice] <= 57)  
      	{  
        	value = value * 10 + (commande[indice]-48);	
        	// chiffre suivant 
        	indice++;  
      	}  
      	// Haut si pas plus chiffre à être ajouté à la valeur numérique 
      	indice--;  
      	Serial.print("> servo gauche : ");  
      	Serial.println(value,DEC);  
      	break;  
    	case 'D':  
      	// Continuer à l'autre char (peut contenir la valeur numérique  
      	indice++;  
      	while (commande[indice] >= 48 && commande[indice] <= 57)  
      	{  
        	value = value * 10 + (commande[indice]-48);	
        	//chiffre suivant
        	indice++;  
      	}  
      	// Haut si pas plus chiffre à être ajouté à la valeur numérique 
      	indice--;  
      	Serial.print("> servo droit : ");  
      	Serial.println(value,DEC);  
      	break;  
    	default:  
// Serial.print ("> commande non reconnue:");
// Serial.println (commande [indice]); 
      	break;    	
    	}    	
    	indice++;  
  	}   
  	
	}

je les compilé , et cela fonction , dans le serial monitore a ne pas oublier de mettre 9600 bauds et d'écrire les lettre en majuscule voila , donc pour ma par le code fonctionne.

#18 huntor

huntor

    Nouveau membre

  • Membres
  • 4 messages
  • Gender:Male

Posté 09 août 2012 - 10:02

J'ai modifier le code pour qu'il te conviens. Si tu veut que le moteur tourne en marche arrière tu as juste a rajouter un '-' devant la valeur
Apres si ça ne marche pas, affiche la chaîne de caractère que tu reçoit pour vérifier qu'elle est bonne.



#include <SabertoothSimplified.h>


SabertoothSimplified ST(Serial1); //Created Objet sabertooth using serial1  
/** 
 * Command Line Interface for Arduino 
 * 
 * Julien Holtzer for www.pobot.org 
 *  
 * 18 mars 2009, late in the night 
 */  
  
// numerical value to be decoded after specific commands  
int value = 0;  
  
// where we currently are in the sequence construction or decoding  
int indice = 0;  
  
// the sequence of characters where is stored what the user wants  
char commande[40]; // reduce the length to save memory (if necessary)  
int  sensg=0;
int sensd=0;
int tempg;
int tempd;
/** 
 * 
 */  
void setup()  
{  
  Serial.begin(9600);
  Serial1.begin(38400); // This is the baud rate (SERIAL1) you chose with  the sabertooth's DIP switches.  
}  
  
/** 
 * 
 */  
void loop()  
{  
  // Start a new reception, reinit the browser index of the array  
  indice = 0;  
  // Fill-in the sequence of chars with all received characters  
  while (Serial.available())  
  {  
    commande[indice++] = Serial.read();      
  }  
  // End the array with a specific character (E=End)  
  // (means that you can't choose 'E' as a user meaning command  
  commande[indice] = 'E';  
  
  // Don't continue the loop if no command (adapt to your own code)  
  if (indice == 0) return;  
  
  // DEBUG Display that a new sequence has been found  
  //Serial.print("> Received command, length=");  
  //Serial.println(indice);  
  
  // Start parsing the sequence array  
  indice = 0;  
  while (commande[indice] != 'E')   
  {  
    // Reinit the numerical value  
    value = 0;  
    //  
    switch (commande[indice])  
    {  
    case 'S':  
      Serial.println("> Start command.");  
      break;  
    case 'G':  
      // Continue to the next char (could contain the numerical value  
      indice++;
       
      if(commande[indice]=='-')
      {
        sensg=2; 
        indice++;
      }else sensg=1;
      
      while (commande[indice] >= 48 && commande[indice] <= 57)  
      {  
        value = value * 10 + (commande[indice]-48);    
        // next digit  
        indice++;  
      }  
      // Back if no more digit to be added to numerical value  
      indice--;
     // Serial.print("sensg= ");
     // Serial.println(sensg);
      tempg=value;
      ST.motor(sensg, tempg);  
      Serial.print("> servo gauche : "); 
      if(sensg==1)Serial.print("Marche avant ");
      else if(sensg==2) Serial.print("Marche arriere ");
      Serial.print(tempg,DEC); 
      Serial.println (" %"); 
      break;  
    case 'D':  
      // Continue to the next char (could contain the numerical value  
      indice++; 
     if(commande[indice]=='-')
      {
        sensd=2; 
       indice++;
      }else sensd=1; 
      while (commande[indice] >= 48 && commande[indice] <= 57)  
      {  
        value = value * 10 + (commande[indice]-48);    
        // next digit  
        indice++;  
      }  
      // Back if no more digit to be added to numerical value  
      indice--;
      //Serial.print("sensd= ");
     // Serial.println(sensd);
    tempd=value;
      ST.motor(sensd, tempd);  
      Serial.print("> servo droit : ");
      if(sensd==1)Serial.print("Marche avant ");
      else if(sensd==2) Serial.print("Marche arriere ");  
      Serial.print(tempd,DEC);
      Serial.println (" %");   
      break;  
    default:  
      //Serial.print("> unrecognized command : ");  
      //Serial.println(commande[indice]);  
      break;        
    }        
    indice++;  
  }   
  
}


#19 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 09 août 2012 - 10:31

Moi je dis que c'est à cause du VB :P

le troll est de retour :P
ça m'ettonne pas de toi, mais ou est passé ta liberté créative :on_the_quiet:

enfin bon pour le moment je suis dans le c et non pas dans le VB :kez_11:


Salut julkien bon j'ai testé le code que tu nous a demandé.


je les compilé , et cela fonction , dans le serial monitore a ne pas oublier de mettre 9600 bauds et d'écrire les lettre en majuscule voila , donc pour ma par le code fonctionne.

merci c'est cool, du coup je sais pas pourquoi il ne fonctionne pas chez moi pfff

un autre truc bizarre : quand je compile et que je l'envois sur l'arduino il faut que j'attend une minute avant d'avoir une reponse( meme si elle n'est pas coherente)

J'ai modifier le code pour qu'il te conviens. Si tu veut que le moteur tourne en marche arrière tu as juste a rajouter un '-' devant la valeur
Apres si ça ne marche pas, affiche la chaîne de caractère que tu reçoit pour vérifier qu'elle est bonne.



ou la c'est cool j'en demané pas autant mais tu m'enleve une sacré épine du pied (moi et le c) :ok:

en plus par un inconnu ;)

je test tout ça ce soir

et vous tien au courant

merci a tous

#20 huntor

huntor

    Nouveau membre

  • Membres
  • 4 messages
  • Gender:Male

Posté 09 août 2012 - 01:56

Désoler mon programme précédent ne fonctionnait pas donc je l'ai donc refait depuis le début
//#include <SabertoothSimplified.h>


//SabertoothSimplified ST(Serial1); //Created Objet sabertooth using serial1 

char commande[40];
int gSpeed,dSpeed;
int gSens, dSens;
boolean allData;
int indice=0;
int mode=0;
char c;

/*
          Protocol de communication :
          
         Bit de start 'S' + Choix du moteur 'G'ou'D' + sens '-' pour marche arrière ou rien pour marche avant + vitesse du moteur en % + bit de fin 'E'
         Exemple = "SG67D-56E" Moteur gauche à 67% en marche avant et Moteur droit à 56% en marche arrière
*/
void setup()
{
  Serial.begin(9600);// port série de communication pc//Arduino
  //Serial1.begin(38400); // This is the baud rate (SERIAL1) you chose with  the sabertooth's DIP switches.
}


void loop()
{
   if (Serial.available())// si réception de donnée
   {
      // read the incoming byte:
      c = Serial.read();
      commande[indice++]=c;// incrémentation du buffer
              
      // say what you got:
     // Serial.print("I received: ");
      //Serial.println(c);
      if(c=='E')//Réception du bit de fin
      {
        allData=true;
      }
   }
   if(allData && indice)
   {
     for(int i=0; i<indice; i++)// analyse du buffer
     {
       switch (commande[i])  
       {  
        case 'S': 
          Serial.println("Reception des donnees");   
          break;
      
        case 'G':
          mode=1;
          break; 
      
        case 'D':
          mode=2;   
          break;
      
        default:    
          break;        
       }
       if(mode==1)//Réception des données du moteur gauche
       {
         //Serial.println("mode1");
         if(commande[i]=='-')// caractère '-' pour indiquer la marche arrière
         {
            gSens=2; 
         }else gSens=1;
         if (commande[i] >= '0' && commande[i] <= '9')  
         {  
            gSpeed = gSpeed * 10 + (commande[i]-'0');// "(commande[i]-'0')" converti le Char en Int    
         }  
       }
       if(mode==2)//Réception des données du moteur droit
       {
         //Serial.println("mode2");
         if(commande[i]=='-')// caractère '-' pour indiquer la marche arrière
         {
            dSens=2; 
         }else dSens=1;
         if (commande[i] >= '0' && commande[i] <= '9')  
         {  
            dSpeed = dSpeed * 10 + (commande[i]-'0');// "(commande[i]-'0')" converti le Char en Int    
         }  
       }
    }//fin analyse
    
    //ST.motor(gSens, gSpeed); 
    Serial.print("Moteur gauche : "); 
    if(gSens==1)Serial.print("Marche avant ");
    else if(gSens==2) Serial.print("Marche arriere ");
    Serial.print(gSpeed,DEC); 
    Serial.println (" %"); 
    
    //ST.motor(dSens, dSpeed); 
    Serial.print("Moteur droit : "); 
    if(dSens==1)Serial.print("Marche avant ");
    else if(dSens==2) Serial.print("Marche arriere ");
    Serial.print(dSpeed,DEC); 
    Serial.println (" %"); 
    
    gSpeed=0;
    dSpeed=0;
    indice=0;
    allData=false;
    
  }  
}

Si tu ne comprend pas quelque chose n’hésite pas à demander. Après je ne connais pas la librairie que tu utilise pour commander tes moteurs, j'ai donc mis en commentaire cette partie.



Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users