Aller au contenu


Photo
- - - - -

Problème avec shield servo PCA9685


23 réponses à ce sujet

#21 Mike118

Mike118

    Staff Robot Maker

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

Posté 15 juillet 2016 - 02:47

un exemple de code complet les utilisant ? 

Non pas vraiment :  j'ai repris le principe que je fais dans un autre code et ait écrit les fonctions pour correspondre à vos cas directement sur le forum juste pour vous ( "vous "car ça intéresse Telson aussi normalement ^^ ) et pour tous ceux qui viendront lire le sujet. 

Du coup vu que j'ai écrit sans tester, j'ai pas vérifier, c'est possible qu'il y ait une eurreur de frappe ou d'inattention qui se soit glissé, mais sur le principe la logique est bonne. 

Mais si tu as des questions hésites pas à les poser ! =)


 


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  

 

 

 


#22 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 15 juillet 2016 - 03:56

ok merci Mike118 ;-)

 

oui j'ai repris ton code comme base sur un nouveau sketch mais je me demande comment tu fais pour passer tes variables ... 

 

j'en suis la pour l'instant !

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

// called this way, it uses the default address 0x40
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN  150 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX  590 // this is the 'maximum' pulse length count (out of 4096)

const int DePin = 3;
int servoNum = 0;
const int maxNum = 5;

void runServo()
{
   for( servoNum=0;servoNum<maxNum; servoNum++)
   {
     pwm.setPWM(servoPin[servoNum],0,targetPos[servoNum]);
     currentPos[servoNum] = targetPos[servoNum];
   }  
}

void setTargetPos(){
  for(servoNum=0;servoNum<maxNum; servoNum++)
  {
    timeServo[servoNum]=timeServo[servoNum]+1; 
    if(  timeServo[servoNum]> tempo[servoNum]) 
    {
        timeServo[servoNum]=0; 
        if(currentPos[servoNum]<(finalPos[servoNum]-pas[servoNum]))
        { 
           targetPos[servoNum]= currentPos[servoNum]+ pas[servoNum];
        }
       else if(currentPos[servoNum]>(finalPos[servoNum]+pas[servoNum])
       {
           targetPos[servoNum] = currentPos[servoNum]- pas[servoNum];
       }
       else targetPos[servoNum] = finalPos[servoNum];
    }  
  }
}

void setup() {
  pinMode(DePin, OUTPUT);

  digitalWrite(DePin, LOW);
  Serial.begin(9600);
  Serial.println("K ARM ROBOT");

  pwm.begin();
  delay(1000);
  pwm.setPWMFreq(60);

  yield();
}

void loop() {
runServo();
setTargetPos();
}

donc si je comprends bien il faut un tableau avec la séquence ?



#23 Mike118

Mike118

    Staff Robot Maker

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

Posté 15 juillet 2016 - 10:19

#define NSERVO 6

uint8_t servoPin[NSERVO];   // pas forcément utile si on met les servo dans l'ordre mais utilise si jamais on veut facilement changer les ordres des servos
uint16_t targetPos[NSERVO]; // position intérmédiaire targété pour avoir un mouvement soft
uint16_t timeServo[NSERVO]; // temps passé pour chaque servo 
uint8_t tempo[NSERVO];    // Temps à passer avant d'avancer d'un pas pour chaque servo
uint16_t currentPos[NSERVO]; // position courante pour chaque servo
uint16_t finalPos[NSERVO];  // position finale pour chaque servo
uint8_t pas[NSERVO]; // pas pour chaque servo 

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 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 16 juillet 2016 - 01:50

ok Mike118, je vais essayer de faire un petit bout de code avec des tableaux !!

 

Encore merci





Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users