Aller au contenu


Photo
- - - - -

focuser motorisé télescope


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

#21 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 19 février 2022 - 02:21

alors j'ais essayé d'initialiser les boutons pins 10 et 11 

pour faire tourné dans un sens ou l'autre mais rien ne se passe avec ce programme 

/*
    Name:       Vitesse MPAP
    Auteur:     vitou
*/
#define tempoDepart 0;
int tempo = 500;                         // Moteur arrete
int tempoAccelerer = 500;
int tempoRalentir = 500;
int tempoAddition = 0;




#define driverDirPin 2
#define driverStepPin 3    
#define boutonAccelererPin 10    
#define boutonRalentirPin 11




void setup()
{
  pinMode(driverDirPin, OUTPUT);
  pinMode(driverStepPin, OUTPUT);




  pinMode(boutonAccelererPin,
INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonRalentirPin, INPUT_PULLUP);   //         "        "        "






  digitalWrite(driverDirPin, LOW);            // On met la broche DIR a l'etat bas
}




void loop()
{
    tempoAddition = 0;
    if (digitalRead(boutonAccelererPin) == LOW)      // Si le bouton accelerer est presse
    {
      tempoAddition = tempoAccelerer;
    }
    else if (digitalRead(boutonRalentirPin) == HIGH)  // Si le bouton freiner est presse
    {
      tempoAddition = tempoRalentir;
    }
    
    {
      tempo = 0;
    }




    if (tempo > 0)
    {
      digitalWrite(driverStepPin, LOW);
      delayMicroseconds(tempo + tempoAddition);
      digitalWrite(driverStepPin,
HIGH);
      delayMicroseconds(tempo + tempoAddition);
    }
}

j'ai voulut me basser sur l'enssien programme .

mais je doit dire que je patine un peu 



#22 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 20 février 2022 - 10:03

coucou 

j'ais ressayer ce week pour mon programme 

j'en ais refais un "plus propre" en me basent toujours sur l'ancien 

le voila 

/*
    Name:       focus télescope 
    Auteur:     vitou
*/
#define tempoDepart 2080;
int tempo = 0;                         // Moteur arrete
int tempoAddition = 0;




#define driverDirPin 4
#define driverStepPin 5    
#define boutonZoomInPin 10
#define boutonZoomOutPin 11




void setup()
{
  pinMode(driverDirPin, OUTPUT);
  pinMode(driverStepPin, OUTPUT);




  pinMode(boutonZoomInPin,
INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "




  digitalWrite(driverDirPin, LOW);            // On met la broche DIR a l'etat bas
}




void loop()
{
    tempoAddition = 0;
    if (digitalRead(boutonZoomInPin) == LOW)      // Si le bouton Zoom In est presse
    {
      tempoAddition = tempoZoomIn;
    }
    else if (digitalRead(boutonZoomOutPin) == HIGH)  // Si le bouton Zoom Out est presse
    {
      tempoAddition = tempoZoomOut;
    }
    
    {
      tempo = 0;
    }




    if (tempo > 0)
    {
      digitalWrite(driverStepPin, LOW);
      delayMicroseconds(tempo + tempoAddition);
      digitalWrite(driverStepPin,
HIGH);
      delayMicroseconds(tempo + tempoAddition);
    }
}

mais mais mais 

a la vérification 

exit satus 1

tempoZoomIn was not declared in this scope 

comment y remedier ?



#23 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 20 février 2022 - 11:29

Je vois plusieurs points qui ne vont pas. 

1) Tes variables tempoZoomIn et tempoZooout, ne sont pas déclaré et pas initialisée. 

2) la ligne " tempo=0; " va se faire tout le temps . Du coup ton if (tempo > 0) sera toujours " faux" et son contenu ne se réalisera jamais. 

3) Si tu veux piloter un moteur pas à pas tu te simplifierais grandement la vie en utilisant une librairie comme la librairie accelStepper.
Exemple de code pour faire tourner à une vitesse définie: ( (Librairie à installer avant de pouvoir tester ce code) 


 

#include <AccelStepper.h>

AccelStepper stepper(1,5,4); //le 5 représente la sortie de l'arduino avec laquelle tu controles la vitesse, et le 4 le sens de rotation.

void setup()
{  
   stepper.setMaxSpeed(2000);V//vitesse max du moteur en nombre de steps par seconde
   stepper.setSpeed(100);//Réglage de la vitesse du moteur
}

void loop()
{  
   stepper.runSpeed();// fait tourner le moteur à la vitesse réglée. 
}

Si ton besoin c'est pas de faire tourner à une vitesse définie mais un certain nombre de pas c'est tout aussi simple. Je t'invite à jeter un oeil à la doc de la lib accelstepper


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  

 

 

 


#24 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 21 février 2022 - 05:53

Bon j'abandonne d'éssayer de faire moi meme .(la programmation , c'est un metier bien trop compliqué pour moi )

es que quelqu'un pourrait me faire le programme 

et m'expliquer ,ou me le fusionner avec mon code actuel ? svp .



#25 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 21 février 2022 - 07:18

Non il ne faut pas abandonner, si tu as envie d'apprendre tu vas y arriver. Tu es vraiment pas loin, c'est juste qu'il faut apprendre à marcher avant de vouloir courrir, et apprendre à mettre un pied devant l'autre avant de réellement marcher ;) 

Si tu veux apprendre par toi même, moi (ainsi que d'autres ) on aide gratuitement ici ;) Car c'est partage et entraide ici =) Par contre en effet ça demande un peu d'efforts de ta part aussi et vu là où tu en es je suis sûr que tu peux y arriver si tu en as envie.

 

Si tu veux quelqu'un qui te fasse le truc pour toi, là c'est une prestation et c'est payant, c'est ce que je fais tous les jours pour différents clients :) 

Personnellement, si tu as un code qui marche mais qui ne fait que la moitié des fonctions que tu veux et que tu veux le modifier pour ajouter l'autre moitié mais que tu n'y arrives pas, je pense que c'est par ce que tu ne le maîtrises pas complètement. Dans ce cas si tu passes un peu de temps à bien comprendre le code que tu as à la base, ça t'aidera à mieux comprendre ce que tu dois faire pour le modifier. 

( Au passage l'usage de la librairie accelstepper n'est pas du tout obligatoire dans ton cas, mais je pense qu'apprendre à l'utiliser  pour savoir faire bouger un moteur pas à pas comme tu veux te facilitera le codage et c'est pour cela que je t'en ai parlé, mais si ça t'embrouille plus qu'autre chose pour le moment tu peux mettre ce point de côté ) 


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  

 

 

 


#26 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 21 février 2022 - 10:30

bon j'ai essayé de corriger mes erreures en m'aidant de l'option vérifier .

 la ligne " tempo=0; " va se faire tout le temps . Du coup ton if (tempo > 0sera toujours " faux" et son contenu ne se réalisera jamais. 

 

 

je l'ai supprimé

mais j'ais laissé le tempo depar a zéro vu que je veux que le moteur fonctionne que quand je vais appuyer sur les 2 boutons 

j'ai passé le boutonZoomOutPin sur HIGH au niveau de void loop (pour le faire tourner a l'inverse)


/*
    Name:       focus télescope 
    Auteur:     vitou
*/
#define tempoDepart 0;


int tempoAddition = 0;
int tempoboutonZoomIn 2080
int tempoboutonZoomOut 2080


#define driverDirPin 2
#define driverStepPin 3    
#define boutonZoomInPin 10
#define boutonZoomOutPin 11




void setup()
{
  pinMode(driverDirPin, OUTPUT);
  pinMode(driverStepPin, OUTPUT);




  pinMode(boutonZoomInPin,
INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "




  digitalWrite(driverDirPin, LOW);            // On met la broche DIR a l'etat bas
}




void loop()
{
    tempoAddition = 0;
    if (digitalRead(boutonZoomInPin) == LOW)      // Si le bouton Zoom In est presse
    {
      tempoAddition = 0;
    }
    else if (digitalRead(boutonZoomOutPin) == HIGH)  // Si le bouton Zoom Out est presse
    {
      tempoAddition = 0;
    }
    
    {
      tempo = 0;
    }




    if (tempo > 0)
    {
      digitalWrite(driverStepPin, LOW);
      delayMicroseconds(tempo + tempoAddition);
      digitalWrite(driverStepPin,
HIGH);
      delayMicroseconds(tempo + tempoAddition);
    }
}

ca a l'air d'aller appart au niveau du define 

int tempoboutonZoomIn il apparait une ligne d'erreur qui me dit 

exit status 1

expected initializer before numeric constant 

 

et je bloc a ce niveaux 



#27 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 21 février 2022 - 11:27

justement si tu précises " int " ce ne sont pas "#define", et donc il te faut le "=" et le ";"
Regarde comment tu as fais 

tempoAddition " et regarde les deux autres ça devrait te sauter au yeux la différence :)
 


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  

 

 

 


#28 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 22 février 2022 - 08:00

Effectivement oui ça saute yeux 😏.
Donc une fois corrigé. C'est le
If tempo 0 qui pose soucis
Il n'est pas initializer correctement qu'il me dit .
Ou alors il faut que je remplace par
If tempotdepart 0 , pour que mon moteur s'arrête quand aucun boutons n'est appuyer ?

#29 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 22 février 2022 - 10:16

Si tu ne poste pas ton code complet et que tu n'expliques pas un peu mieux ce que tu vas faire et ce qui ne va pas il est difficile de t'aider. 

Dans ton dernier code il y a toujours le tempo=0; qui s'exécute à chaque fois...

Je suis pas sûr à 100% de ce que tu cherches à faire mais je suppose que ça ça doit s'en rapprocher : 

 

#define driverDirPin 2
#define driverStepPin 3    
#define boutonZoomInPin 10
#define boutonZoomOutPin 11
#define tempo 500

bool zoom = false;

void setup()
{
  pinMode(driverDirPin, OUTPUT);
  pinMode(driverStepPin, OUTPUT);
  pinMode(boutonZoomInPin, INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "
}

void loop()
{
    if (digitalRead(boutonZoomInPin) == LOW) {     // Si le bouton Zoom In est presse
      digitalWrite(driverDirPin, LOW);
      zoom = true;
    } else if (digitalRead(boutonZoomOutPin) == LOW) {  // Si le bouton Zoom Out est presse
      digitalWrite(driverDirPin, HIGH);
      zoom = true;
    }

    if (zoom) {
      digitalWrite(driverStepPin, LOW);
      delayMicroseconds(tempo);
      digitalWrite(driverStepPin, HIGH);
      delayMicroseconds(tempo);
      zoom = false;
    }
}

Il te faudrait juste corriger la valeur de la variable tempo et éventuellement le high / low pour zoomer dézoomer.


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  

 

 

 


#30 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 22 février 2022 - 02:58

Ok 

alors voila pour résumer 

je me suis l'ansé dans la fabrication d'un suivi d'ascension droite motorisé pour mon télescope (avec un moteur pas a pas )

avec une grande aide de sandro (sans lui je n'y serais pas arrivé ) j'ais obtenu ce code

/*
    Name:       Vitesse MPAP
    Auteur:     robomaker
*/
#define                         // Moteur arrete
int tempoZoomOut = 500;
int tempoZoomIn = 700;
int tempoAddition = 0;




#define driverDirPin 2
#define driverStepPin 3    
#define boutonZoomInPin 10    
#define boutonZoomOutPin 11
#define boutonMarchePin 8
#define boutonArretPin 9




void setup()
{
  pinMode(driverDirPin, OUTPUT);
  pinMode(driverStepPin, OUTPUT);




  pinMode(boutonZoomInPin,
INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "
  pinMode(boutonMarchePin, INPUT_PULLUP);
  




  digitalWrite(driverDirPin, LOW);            // On met la broche DIR a l'etat bas
}




void loop()
{
  for (int i = 0; i <= 200; i++)
  {
    tempoAddition = 0;
    if (digitalRead(boutonZoomInPin) == LOW)      // Si le bouton accelerer est presse
    {
      tempoAddition = tempoZoomOut;
    }
    else if (digitalRead(boutonZoomOutPin) == LOW)  // Si le bouton freiner est presse
    {
      tempoAddition = tempoZoomIn;
    }
      tempo = 0;
    }




    if (tempo > 2008)
    {
      digitalWrite(driverStepPin, LOW);
      delayMicroseconds(tempo + tempoAddition);
      digitalWrite(driverStepPin,
HIGH);
      delayMicroseconds(tempo + tempoAddition);
    }
  }
}

avec ca je peu 

démarrer le moteur 

arreter le moteur 

accélérer la vitesse de rotation 

freiner la vitesse de rotation 

avec 4 boutons poussoir .

 

J'ai donc voulut motoriser ma mise au point du focus télescope ,avec le meme principe 

avec deux boutons poussoir 

rotation dans un sens (zoom in )

rotation dans l'autre sens (zoom out )

 

avec ton code 

#define driverDirPin 2
#define driverStepPin 3 
#define boutonZoomInPin 10
#define boutonZoomOutPin 11
#define tempo 500

bool zoom = false;

void setup()
{
pinMode(driverDirPin, OUTPUT);
pinMode(driverStepPin, OUTPUT);
pinMode(boutonZoomInPin, INPUT_PULLUP); // L'autre cote du bouton au GND
pinMode(boutonZoomOutPin, INPUT_PULLUP); // " " "
}

void loop()
{
if (digitalRead(boutonZoomInPin) == LOW) { // Si le bouton Zoom In est presse
digitalWrite(driverDirPin, LOW);
zoom = true;
} else if (digitalRead(boutonZoomOutPin) == LOW) { // Si le bouton Zoom Out est presse
digitalWrite(driverDirPin, HIGH);
zoom = true;
}

if (zoom) {
digitalWrite(driverStepPin, LOW);
delayMicroseconds(tempo);
digitalWrite(driverStepPin, HIGH);
delayMicroseconds(tempo);
zoom = false;
}
}

Il fonctionne impecable formidable .( c'est meme magique )

mais je ne comprend pas toujours tout .

 pourquoi dans le premier programme , on a du tempo 0 et pas dans le tien ?

pourtant si je suis  ma logique (qui ne doit pas etre si logique ) on a bien du tempo 0 quand le moteur est a l'arret ?

 

et 

bool zoom = false;

je ne l'aurrait jamais trouver .

 

enfin déja un grand MERCI a vous 

 

reste plus qua les mètre tout les deux (codes) dans la carte arduino , je suppose qu'il doit y avoir deux trois surprise , et que se ne vas pas etre aussi simple que faire du copier coller comme pour un seul programme ?

 


#31 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 22 février 2022 - 06:16

bon j'ais essayé 

comme apparemment on ne peu queavoir une seule fonction setup et loop dans un code arduino 

j'ais lu deux trois mot comme fonction millis ,fusionner deux scketchs   :close_tema:

 alors j'ai tenter ca 

 

mais c'est un festival d'erreur 

#define driverDirPin 2
#define driverStepPin 3    
#define boutonZoomInPin 10
#define boutonZoomOutPin 11
#define tempo 500
#define tempoDepart 2080;
int tempo = 0;                         // Moteur arrete
int tempoAccelerer = -500;
int tempoRalentir = 700;
int tempoAddition = 0;




#define driverDirPin 4
#define driverStepPin 5    
#define boutonAccelererPin 6    
#define boutonRalentirPin 7
#define boutonMarchePin 8
#define boutonArretPin 9




bool zoom = false;


void setup()
{
  pinMode(driverDirPin, OUTPUT);
  pinMode(driverStepPin, OUTPUT);
  pinMode(boutonZoomInPin, INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "
}
{
  pinMode(driverDirPin, OUTPUT);
  pinMode(driverStepPin, OUTPUT);




  pinMode(boutonAccelererPin,
INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonRalentirPin, INPUT_PULLUP);   //         "        "        "
  pinMode(boutonMarchePin, INPUT_PULLUP);
  pinMode(boutonArretPin, INPUT_PULLUP);




  digitalWrite(driverDirPin, LOW);            // On met la broche DIR a l'etat bas
}
void loop()
{
    tempoAddition = 0;
    if (digitalRead(boutonAccelererPin) == LOW)      // Si le bouton accelerer est presse
    {
      tempoAddition = tempoAccelerer;
    }
    else if (digitalRead(boutonRalentirPin) == LOW)  // Si le bouton freiner est presse
    {
      tempoAddition = tempoRalentir;
    }
    else if (digitalRead(boutonMarchePin) == LOW)    // Si le bouton marche est presse
    {
      tempo = tempoDepart;
    }
    else if (digitalRead(boutonArretPin) == LOW)     // Si le bouton marche est presse
    {
      tempo = 0;
    }
       if (tempo > 0)
    {
      digitalWrite(driverStepPin, LOW);
      delayMicroseconds(tempo + tempoAddition);
      digitalWrite(driverStepPin,
HIGH);
      delayMicroseconds(tempo + tempoAddition);
    }
{
    if (digitalRead(boutonZoomInPin) == LOW) {     // Si le bouton Zoom In est presse
      digitalWrite(driverDirPin, LOW);
      zoom = true;
    } else if (digitalRead(boutonZoomOutPin) == LOW) {  // Si le bouton Zoom Out est presse
      digitalWrite(driverDirPin, HIGH);
      zoom = true;
    }


    if (zoom) {
      digitalWrite(driverStepPin, LOW);
      delayMicroseconds(tempo);
      digitalWrite(driverStepPin, HIGH);
      delayMicroseconds(tempo);
      zoom = false;
    }
}


#32 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 22 février 2022 - 08:04

Si tu n'utilises pas tes deux moteurs en même temps tu peux faire un truc du genre : 
 

// zoom
#define zoomDirPin 2
#define zoomStepPin 3    
#define boutonZoomInPin 10
#define boutonZoomOutPin 11
#define tempoZoom 500
bool zoom = false;

// suivi
#define suiviDirPin 4
#define suiviStepPin 5    
#define boutonAccelererPin 6    
#define boutonRalentirPin 7
#define boutonMarchePin 8
#define boutonArretPin 9
#define normal 2080
#define rapide 1580
#define lent 2780

int tempo;

void setup() {
  pinMode(zoomDirPin, OUTPUT);
  pinMode(zoomStepPin, OUTPUT);
  pinMode(suiviDirPin, OUTPUT);
  pinMode(suiviStepPin, OUTPUT);
  pinMode(boutonZoomInPin, INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonZoomOutPin, INPUT_PULLUP);   //         "        "        "
  pinMode(boutonAccelererPin,INPUT_PULLUP);  // L'autre cote du bouton au GND
  pinMode(boutonRalentirPin, INPUT_PULLUP);   //         "        "        "
  pinMode(boutonMarchePin, INPUT_PULLUP);
  pinMode(boutonArretPin, INPUT_PULLUP);
}

void loop() {
    tempo = 0;  // Le fait de mettre cette ligne force l'utilisateur à rester appuyé sur le bouton
    if (digitalRead(boutonAccelererPin) == LOW)      // Si le bouton accelerer est pressé
      tempo = rapide;
    else if (digitalRead(boutonRalentirPin) == LOW)  // Si le bouton freiner est pressé
      tempo = lent;
    else if (digitalRead(boutonMarchePin) == LOW)    // Si le bouton marche est pressé
      tempo = normal;
    else if (digitalRead(boutonArretPin) == LOW)     // Si le bouton arrêt est pressé
      tempo = 0;

    if (tempo > 0) {
      digitalWrite(suiviStepPin, LOW);
      delayMicroseconds(tempo);
      digitalWrite(suiviStepPin, HIGH);
      delayMicroseconds(tempo);
    }

    if (digitalRead(boutonZoomInPin) == LOW) {     // Si le bouton Zoom In est presse
      digitalWrite(zoomDirPin, LOW);
      zoom = true;
    } else if (digitalRead(boutonZoomOutPin) == LOW) {  // Si le bouton Zoom Out est presse
      digitalWrite(zoomDirPin, HIGH);
      zoom = true;
    }

    if (zoom) {
      digitalWrite(zoomStepPin, LOW);
      delayMicroseconds(tempoZoom);
      digitalWrite(zoomStepPin, HIGH);
      delayMicroseconds(tempoZoom);
      zoom = false;
    }
}

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  

 

 

 


#33 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 22 février 2022 - 08:52

Si tu n'utilises pas tes deux moteurs en même temps tu peux faire un truc du genre : 

 

c'est une histoire d'intensitée du voltage que la carte ne peu fournir ?

parce que pendant que le moteur de l'ascension droite tourne j'ai besoin du deuxième moteur pour la mise au point .

 

mais sinon pourquoi pas partir avec deux carte uno 

un programme par carte .



#34 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 22 février 2022 - 10:18

Non c'est juste une question de "code", de la structure du code et de l'usage fait de la fonction delaiy. 

Essaye le code que je viens de t'envoyer d'abord un moteur puis l'autre puis les deux en même temps et tu verras. 

Mais rassure toi il y a toujours des solutions, tu peux bien évidement utiliser une seul arduino pour piloter tes deux moteurs ;)

Après si tu préfères deux arduino au lieu d'une seule tu peux aussi bien entendu... Mais tu n'as pas besoin de deux. :) 


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  

 

 

 


#35 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 23 février 2022 - 05:13

Alors j'ai essayé
Moteur séparément sa fonctionne , à par le bouton Marche qui change (il faut rester appuyer pour qu'il reste en rotation) normalement il doit rester en marche après avoir appuyer sur le bouton.

Et quand je fait tourner les deux , ils tourne mais très faiblement , comme si il n'y avait pas asser de volt.

#36 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 23 février 2022 - 09:32

quelque chose que je ne comprend pas 

sur le nouveau programme (fusion) 

pour mètre en rotation le moteur de l'axe ascension droite , le boutonMarchePin 8 

il faut rester appuyer sur le bouton ( sinon il s'arrete). Alors que normalement non ,une impulsion suffisait .

mais dans les deux programme , (celui de l'ascension et le fusionne ) 

je ne voit pas la différence 

a par au niveau void loop () 

on a un cotée 

void loop () tempo=0; // pour le programme fusionne 

et l'autre 

void loop () tempoAddition=0 // pour le programme ascension droite 

es ca la différence ?



#37 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 24 février 2022 - 01:15

Bon c'est un peu de ma faute.
En voulant "simplifier le code" mais ne sachant pas quelle fonctionnement tu voulais j'ai mis cette ligne : 

 

tempo = 0;  // Le fait de mettre cette ligne force l'utilisateur à rester appuyé sur le bouton

Si tu lis le commentaire je suppose que tu devrais comprendre que la supprimer devrait de faire fonctionner la chose comme tu le souhaites. 
Par contre si tu ne vois pas la différence au niveau du code, je pense qu'il faut que tu passes un peu plus de temps sur le programme et que tu commentes chaque ligne du code pour le comprendre. ça c'est quelque chose que je ne peux pas faire pour toi. C'est à toi de faire cet exercice. ( Par contre si tu as des questions précise comme là, je peux y répondre ) 

En tout cas, la faible vitesse je te confirme que non ce n'est pas un problème de voltage uniquement l'organisation du code qui veut ça. Et j'espère que tu vas être capable de m'expliquer pourquoi en relisant le code et en faisant l'exercice de bien réfléchir à ce qui se passe dans le cadre de chaque appuis de bouton. 
" Estime le temps que mets une boucle à s'exécuter dans les différents cas en considérant que chaque ligne prend 0ms sauf les lignes avec les delay. ".... 
 


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  

 

 

 


#38 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 25 février 2022 - 06:11

alors je crois que mon problème vient de la

 if (tempo > 0) {
      digitalWrite(suiviStepPin, LOW);
      delayMicroseconds(tempo);
      digitalWrite(suiviStepPin, HIGH);
      delayMicroseconds(tempo);
    }
    if (zoom > 0 )  {
      digitalWrite(zoomStepPin, LOW);
      delayMicroseconds(tempoZoom);
      digitalWrite(zoomStepPin, HIGH);
      delayMicroseconds(tempoZoom);
 
j'ais trouver comment installer  AccelStepper 
mais avec sa , faut refaire tout le programme ?
j'ais chercher dans les exemples de AccelStepper mais on part encore dans des chose compliquer pour moi .
 
 


 
Par contre si tu ne vois pas la différence au niveau du code, je pense qu'il faut que tu passes un peu plus de temps sur le programme

 

 

c'est le tempoAddition la différence ?



#39 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 25 février 2022 - 11:48

En effet, j'ai retiré le " tempoAddition " que j'estimais superflux. 

Tu peux commenter la ligne que j'ai indiqué et tu verras que ça marche avec juste un appuis sur les boutons. 

" tempo = 0 ; "
Après si ça te va pas on peut remettre le tempoAddition ...

Pour ce qui est de accelstepper si tu veux utiliser cette lib avant de modifier ton code pour le faire fonctionner avec il faut que tu comprennes la base de comment fonctionne la lib. 

Essaye ce code : 

 

#include <AccelStepper.h>

#define zoomDirPin 2
#define zoomStepPin 3 

AccelStepper stepper(1, zoomStepPin, zoomDirPin);

void setup()
{
 stepper.setMaxSpeed(500); //Vitesse à atteindre
 stepper.setAcceleration(600); //Accélération
 stepper.moveTo(40000); //Position angulaire à atteindre
}

void loop()
{
 stepper.run();
}

et peux aussi teste celui là  ( qui à mon avis est celui qui t'intéresse plus ;)

#include <AccelStepper.h>

#define zoomDirPin 2
#define zoomStepPin 3 

AccelStepper stepper(1, zoomStepPin, zoomDirPin);

void setup()
{  
   stepper.setMaxSpeed(2000); //vitesse max du moteur en nombre de steps par seconde
   stepper.setSpeed(100);//Réglage de la vitesse du moteur
}

void loop()
{  
   stepper.runSpeed();// fait tourner le moteur à la vitesse réglée. 
}

tu peux essayer différentes valeurs de vitesse au lieu de 100 pour repérer quelles sont les valeurs qui correspondent à ta vitesse normale, rapide et lente. :) 

tu peux aussi essayer de modifier ce code afin de mettre les lignes qu'il faut pour piloter deux moteurs. 
Une fois que tu y arrives tu pourras facilement modifier ton premier code pour avoir le fonctionnement que tu veux. 


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  

 

 

 


#40 Victorien

Victorien

    Membre occasionnel

  • Membres
  • Pip
  • 96 messages

Posté 26 février 2022 - 02:59

j'ais essayer de changer simplement le programme avec AccelStepper mais comme d'habitude il y a ereure 

#include <AccelStepper.h>


#define zoomDirPin 2
#define zoomStepPin 3 
#define suiviDirPin 5
#define suiviStepPin 4


AccelStepper
 stepper(1, zoomStepPin, zoomDirPin);
 stepper(2, suiviDirPin, suiviStepPin);


void setup()
{  
   stepper.setMaxSpeed(2000); //vitesse max du moteur en nombre de steps par seconde
   stepper.setSpeed(1000);//Réglage de la vitesse du moteur
}


void loop()
{  
   stepper.runSpeed();// fait tourner le moteur à la vitesse réglée.
 }

j'arrive a changer les moteur mais c'est soit l'un ou l'autre 

je pense que le problème est la 

AccelStepper
 stepper(1, zoomStepPin, zoomDirPin);
 stepper(2, suiviDirPin, suiviStepPin);
 

 






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

0 members, 0 guests, 0 anonymous users