Quand je lui demande de tourner à 135° : rien du tout
Quand je lui demande de tourner à 45° : il le fait en plusieurs étapes, entre chaqu'une d'elle il y a des lignes qui s'intercalent sur le serial
Tu commentes bien, on peut suivre, mais j'ajouterais la mention PWM dans les déclarations de pins au début lorsque ça fait appel au pwm.
Là, petit oubli je pense:
const int PompeGauche = 5; // declaration pompe au pin 3
En fait, tu déclares bien PompeGauche, tu dis bien que c'est une sortie, mais tu ne t'en sers pas.
Ma question est simple: est-ce une sortie PWM?
Tu peux avoir un conflit venant de là. La raison est chelou, et faut le savoir, mais les pins 9,10,et 5 sont sur le même timer... Résultat, quand tu commandes l'un des 3 en PWM (un moteur) et que tu veux piloter, sur un des deux pins restants autre chose en PWM, genre euh ... un servo, et bah pouf, ça marche pas bien.
Est-ce que tu veux bien me dire quels pins utilisent du PWM, dans l'ensemble de tes programmes ou fonctions si tu ne les as pas encore assemblés...
Si tu pilotes deux moteurs et un servo:
-les deux moteurs sont sur le même driver, donc tu peux utiliser deux sorties du même timer, mais le servo doit être sur un timer, tranquille, une ombrelle dans son verre.
Une sortie digitale donne du HIGH (niveau haut) ou LOW (niveau bas). En gros, 1 ou 0.
Certains pins d'un arduino peuvent aussi faire du PWM. C'est un signal HIGH, mais qui est haché. Ca permet de moduler le signal et d'envoyer une valeur de 0 à255.
Ca sert comme tu l'as compris (ou pas) à dire à un moteur s'il doit tourner à plein régime (255), ou à moitié, ou plus, moins...
Si tu commandes tes moteurs en ON/OFF (HIGH et LOW), alors on s'en fiche!
Mais le servo, lui, il en a besoin, surtout avec cette bibliothèque, c'est le but.
Ainsi, on peut envoyer 'un angle' au servo.
Myservo.write(90) le place à 90°
Il doit donc être sur un pin PWM pour pouvoir le commander, l'asservir (servo), c'est son boulot.
C'est pour cela que je te recommande de le mettre sur un pin qui peut le faire et si possible, qu'il n'y ait aucun autre signal similaire sur un des pins du même timer que celui de ton servo. C'est un peu tordu, et je vois que tu as bien prévu la place de tes pins, c'est pas compliqué, mais nécessaire. Maintenant, s'il n'y a, dans tout ton programme, QUE le servo qui est commandé en PWM, ça va être bien plus simple.
En résumé.
-Seul le servo a besoin de PWM
-Est-ce que tu as mis à jour ton code?
-Après ça, qu'est-ce qui ne fonctionne pas comme tu le voudrais?
Si tu n'as pas compris quoi que ce soit, j'explique pas forcément bien^^ demande, je recommencerai
Mon grain de sel pour ce qu'il vaut car j'ai pas eplucher la lib servo:
La PWM "matérielle" ou encore physique d'un atmega tournent en config arduino de base à 490Hz - 500Hz selon les pinoches et leurs timers respectifs (j'ai plus les valeurs en tête).
La norme "servo" utilise un signal a 50Hz, il me semble donc que la lib servo créée une pwm logicielle, indépendante des pinoches proprement dites "pwm".
Pourquoi je dis ça: j'ai fait le test de mettre un servo sur toutes les broches d'une uno, une par une et de compiler et tester à chaque fois le programme swipe, il a compilé et fonctionné a chaque coup (de 2 à 13), pas testé sur 0 et 1 et les broches A0 à A5
Mais pour une question de temps, je ne peux faire qu'une seule maquette fonctionnelle.
Le bateau V1 tourne ( normalement) avec ses deux moteurs sans avoir besoin d'un gouvernail ( et donc d'un servomoteur);
Je vais donc en rester là et me concentrer sur le code du Bateau V2 basé sur une voiture autonome.
Désolé d'avoir fait ce post et de le stopper ainsi