Bonjour à toutes et tous,
J'aimerais contrôler un servo à rotation continue avec un ESP32, et une manette Ps3. C'est surtout la jonction avec la Ps3 qui me pose problème. Je me suis servi des exemples de la bibliothèque Ps3, mais sans résultats ! Si quelqu'un avait quelques conseils, tutos ou liens à me proposer, ça serait super , et je vous en remercie à l'avance. Bonne journée à toutes et tous . Beginner88
Bonjour beginner88
Quentends-tu par jonction, as-tu un interface PS3 Arduino?
Cordialement
jpbbricole
Bonjour à toi,
J'ai la manette Ps3, que j'ai réussi à appairer avec mon ESP32, je me suis inspiré de l'exemple data de la bibliothèque Ps3, et fait des essais avec une led et un des inters de la manette , ça fonctionne bien , mais j'aurais voulu utiliser un des joysticks pour contrôler mon servo continu , sur l'axe X par exemple du joystick gauche ou l'autre peu importe. js au centre--> arrêt js à droite --> servo à droite js à gauche -->servo à gauche.Cordialement et merci d'avoir pris le temps de me lire . B88
Bonjour beginner88
Quel bibliothèque utilises-tu, mieux, mets le code que tu as déjà fait en ligne.
Mets un lien vers ton servo à rotation continue afin de trouver quelles sont les largeurs minimum et maximum de l'impulsion PWM pour la vitesse maximum dans les 2 sens.
La façon habituelle de faire est d'utiliser la fonction map() ainsi si ta manette donne de 0-1023 comme valeur, en supposant que les valeurs d'impulsions de ton servo soient de 700 à 2700 microsecondes, tu écriras
int pwsServo = map(axePs3Valeur, 0, 1023, 700, 2700);
myServo.write(pwsServo);
Compilé avec ESP32_Servo.h.
Cordialement
jpbbricole
Ps3Data-peut-etre-que-l_on-va-y-arriver.ino (909 Bytes)
Bonsoir,
Je ne sais absolument pas comment faire pour te joindre mon croquis !!! suis débutant et je galère de tout côté mon servo est un Hitec HSR 1425 CR je l'ai testé dans un autre montage et avec ces valeurs j'obtient le résultat voulu . 1500 micros , arrêt, 1300 micros dans un sens, puis 1700 dans l'autre sens . Si c'est possible et si tu est ok donne moi ton mail et je t'envoie mon sketche en PJ . en tout les cas, merci pour les infos. je vais essayer de me depatouiller avec ça § .CDT. B88
Dans l'IDE Arduino, ctrl A pour tout sélectionner, ctrl C pour copier dans le presse-papier, dans le post du forum, cliquer sur
et ctrl C pour coller.
A+
Cordialement
jpbbricole
Bonjour beginner88
C'est 1200 à 1800 microsecondes.
Donc:
int pwsServo = map(axePs3Valeur, 0, 1023, 1200, 1800);
myServo.write(pwsServo);
Cordialement
jpbbricole
#include <Ps3Controller.h>
#include <Servo.h>
Servo monservo;
int Microseconds;
void setup()
{
monservo.attach(25);
pinMode (25, OUTPUT);
Serial.begin(115200);
Ps3.begin("ec:94:cb:70:10:32");// Mac ESP32 ok !
Serial.println("Ready.");
}
void loop()
{
if( abs(Ps3.event.analog_changed.stick.lx) > 10 ){
monservo.writeMicroseconds(1300);delay(500);
}
else
{
monservo.writeMicroseconds(1500);
}
if( abs(Ps3.event.analog_changed.stick.lx)>-2< 1 ){
monservo.writeMicroseconds(1500);
}
if( abs(Ps3.event.analog_changed.stick.lx) < -10 ){
monservo.writeMicroseconds(1700);delay(500);
}
else
{
monservo.writeMicroseconds(1500);
}
}
c'est bon , l'as tu rçu ?
En tout les cas, merci pour ta compréhension et ta patience. Beginner88
Bonsoir beginner88
Comme je n'ai pas le matériel pour essayer, dis moi que vaut cette valeur
Ps3.event.analog_changed.stick.lx
sans le abs(),quand le joystick est tout à gauche et tout à droite, on pourra, ainsi, faire "suivre ton servo.
A+
Cordialement
jpbbricole
Bonsoir à toi,
JS à l'extrême gauche ====> 87, 83, 101, 115 !!
JS à l' extrême droite=====> 28, 13, 22, 27, 39 !! !que veut dire abs ?
j'ai tiré mon sketche en partie de exemple ===> Ps3 ===> Ps3 DEMO
CDT Beginner88
Bonsoir beginner88
C'est si instable que ça?
abs transforme un nombre négatif en positif, abs(-22) = 22.
Cordialement
jpbbricole
ReBonsoir beginner88
Recharges, intégralement l'exemple Demo et dis moi quel valeurs tu as quand les joystick L et R sont tout à gauche et tout à droite.
A+
jpbbricole
Bonsoir,
L comme R central ===> X et Y -1 tout à gauche === > - 127
tout à droite ===> 127
tout en haut ===> -127
tout en bas ===> 127
là, je pense que ce sont les valeurs normales non ?
A+ et merci
Bonsoir beginner88
Tu as quand même pris le temps dîner
Oui, impeccable, du coups, pour commander ton servo:
int pwsServo = map(axePs3Valeur, -127, 127, 1200, 1800);
monservo.write(pwsServo);
Je ne connais pas le nom de ta variable, je l'ai nommée axePs3Valeur à toi de corriger.
Les valeurs 1200 et 1800 sont issues de ce document.
A+
Cordialement
jpbbricole
Bonsoir à toi,
t'inquiète pas, j'ai de la réserve . je te retourne la même chose ! vu que tu m'as répondu rapidemment , tu n'as pas dû manger beaucoup ! en tout cas re re re merci . Je vais voir ça et je te donnerai des nouvelles dès que j'aurais résolu tout ça . Bonne fin de soirée à toi et à bientôt. bien cordialement .
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.