Bonjour,
Je me permets de me tourner vers vous pour essayer de trouver une solution à mon problème.
J'essaie désespérément de faire fonctionner mon driver pwm (16 servos) achetez sur le web.
Je précise que ce dernier est une copie du modèle adafruit….mais bon ….
Bref, voici ma config :
Pc sous windows 7
Genuino mega 2560 rev3 (original)
Servo towerpro MG996R
J’ai effectué la recherche pulsemin et pulsemax avec un petit soft en envoyant des largeurs d’impulsion pour trouver les bornes min et max, soit pulsemin = 650 et pulsemax 2400.
J’ai ensuite utilisé un autre petit programme arduino pour faire bouger mes servo de 0 à 180° par pas de 1°, puis de 180 à 0° et aucun problème.
Enfin j’ai essayé de mettre en œuvre le driver pwm sur un servo connecté à la pin9 du driver (pin0, 3, 5, ....cela ne change rien) !!
Et c’est là que les problèmes commencent : deux servo de MORT déjà…..
Après moultes recherches sur le web, je ne trouve toujours pas de solution à mon problème qui est le suivant : les servos vont en butée 180° à une vitesse phénoménale d’où la destruction de deux servos.
Faut dire que j’ai essayé beaucoup de solutions…..Apparemment je suis complétement à côté de la plaque !!
Le soft maintenant…Baaaaaaaa voici ci-dessous :
/*************************************************** test driver pwm ****************************************************/ #include <Wire.h> #include <Adafruit_PWMServoDriver.h> // Utilisation de l'adresse par défaut 0x40 du Breakout. Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver( 0x40 ); #define SERVOMIN 650 // La longueur d'impulsion 'minimale' (valeur du compteur, max 4096) #define SERVOMAX 2400 // La longueur d'impulsion 'maximale' (valeur du compteur, max 4096) // Servos Commandés - Numéro de sorties sur le breakout uint8_t servo9 = 9; void setup() { Serial.begin(9600); Serial.println("Controle du Servo Moteur 9"); pwm.begin(); pwm.setPWMFreq(60); // Les servo sont mis-à-jour à ~60 Hz Serial.println("Fin de setup"); } void loop() { delay(5000); //--- Controle du Deuxieme Servo (no 9) --- Serial.println("Servo 9 a 30 degres"); int pulseLen = map( 30, 0, 180, SERVOMIN, SERVOMAX ); Serial.println( pulseLen); pwm.setPWM(servo9, 0, pulseLen); delay(5000); //--- Controle du Deuxieme Servo (no 9) --- Serial.println("Servo 9 a 150 degres"); pulseLen = map( 150, 0, 180, SERVOMIN, SERVOMAX ); Serial.println( pulseLen); pwm.setPWM(servo9, 0, pulseLen); delay(5000); //--- Les deux servo à 0 --- Serial.println("Servo 9 a 0 degres"); pulseLen = map( 0, 0, 180, SERVOMIN, SERVOMAX ); Serial.println( pulseLen); pwm.setPWM(servo9, 0, pulseLen); delay(5000); }
Franchement je ne vois pas.....Je passe à côté de quoi ....B...de ......
Merci par avance pour vos conseils, pistes, solutions miracles ou bonnes grosses gifles pour me faire ouvrir les yeux !!!
A bientôt.