Contrôle de deux moteurs avec 2 potentiomètres, vitesse progressive

non, je ne te propose pas une librairie, je t'indique que tu sembles utiliser cette bibliothèque, mais que tu as mal modifier l'exemple de base.
Tu peux te dire que je chipote, mais ce que je voulais dire, c'est de reprendre l'exemple de base que tu as utiliser, pour bien comprendre ce qu'il fait.
Et si ce n'est pas celui-là que tu m'indique lequel c'est :slight_smile:

Là ca ne compile pas, donc tu mélange deux choses :slight_smile:
tu l'utilise effectivement dans l'instruction "motor1.setSpeed(abs(pwmValue1));" et cela fait en partis ce à quoi tu t'attends.
C'est à dire que tu demandes à ton programme de dire au moteur 1, d'aller à la vitesse contenue dans la variable pwmValue1, qui représente la position de ton potentiomètre branché sur potPin1.
Ce moteur 1 va donc tourner à la vitesse demandé le plus vite possible(quasiment instantanément, donc sens progressivité).

L'instruction suivante "pwmValue1.setSpeed(140);" empêche le programme de compiler, donc ce programme ne peut pas être créé, puis placer sur ton Arduino et donc encore moins exécuté.

As tu compris pourquoi cette instruction ne veut rien dire et que le compilateur t'indique que tu ne peux pas faire ça ?

C'est deux instructions non pas de sens non plus, même si d'un point de vue C++ et compilateur
elles sont correctes.

Si on prends une analogie avec la cuisine et que tu guide un cuisinier.
Tu lui demande de cuire pendant pwmValue1(par exemple 255 si le potentiomètre est à fond) minutes et quasiment en même temps (quelques nano seconde plus tard) tu demande de cuire 140 minutes, que va faire le cuisinier?
Que pense tu que fonds ces deux instructions?
pourquoi demander à ton moteur d'aller à la vitesse de pwmValue1 et 140

Je te propose de repartir sur une base de ton code du post #8, sans tout les trucs bizarre qui ne sert à rien.

#include "CytronMotorDriver.h"
#include "pins_arduino.h"

// Configure the motor drivers.
CytronMD motor1(PWM_DIR, 3, 4);   // PWM 1 = Pin 3, DIR 1 = Pin 4.
CytronMD motor2(PWM_DIR, 9, 10);  // PWM 2 = Pin 9, DIR 2 = Pin 10.

const int potPin1 = A0;  // Potentiometer 1 connected to analog pin A0
const int potPin2 = A1;  // Potentiometer 2 connected to analog pin A1

void setup() {
  pinMode(potPin1, INPUT);  // Set potentiometer 1 pin as input
  pinMode(potPin2, INPUT);  // Set potentiometer 2 pin as input
  Serial.begin(9600);
}

void loop() {
  // Read potentiometer values
  int potValue1 = analogRead(potPin1);
  Serial.print("Valeur du potentiomètre 1 : ");
  Serial.print(potValue1);

  // Map potentiometer values to motor speeds
  int pwmValue1 = map(potValue1, 0, 1023, 0, 255);
  motor1.setSpeed(abs(pwmValue1));

  delay(1000);
}

Je n'ai pas testé en vrai, mais si ce programme marche, ton moteur doit tourner dans un seul sens à la vitesse indiqué par ton potentiomètre.

je ne peux pas tester le programme , mais je ne comprend pourquoi tu as mis

int pwmValue1 = map(potValue1, 0, 1023, 0, 255);```

a la place de 

int pwmValue1 = map(potValue1, 0, 1023, -255, 255);```

pourquoi remplacer le -255 par 0 ?

Pour que le moteur ne tourne que dans un sens, car je ne sais pas trop, ce qui va se passer si tu tourne rapidement ton potentiomètre et que tu demandes à ton moteur de tourner brutalement dans le sens contraire.

Dans un premier temps, il faut que tu comprennes ce que font chaque instruction, pas que tu es un programme avec toutes les fonctions que tu désires.

d'accord merci, je ne suis pas en projet donc je ne peux pas avancer, mais merci de me débloquer dans la quête de mon projet.
projet d'escabeau motorisé.

J'ai fait un wokwi, pour que tu puisse comprendre de quoi on parle.
Comme wokwi n'a pas ton driver de moteur, j'ai remplacer le couple driver/moteur par des LED, pour que tu puisse visualiser ce que ta carte Arduino envois à ton driver en fonction de la position du potentiomètre.

Comme j'ai limité le mappage de ton potentiomètre à des valeur de 0 à 255, la LED blanche reste éteinte, mais si tu modifie la plage de mappage, celle-ci pourra s'allumera.
La LED verte sera plus ou moins allumé intensément en fonction de la position du potentiomètre.

Une fois que tu penses avoir compris ce que fait chaque instruction et que tu n'a pas de question.
Le jeu consiste, a temporiser le niveau d'intensité de LED(représentant la vitesse de tes moteurs)
C'est à dire que si ton potentiomètre est initialement positionner sur 0(tout à gauche) et que tu le positionne à 1023(tout à droite), la LED mette au moins 30s pour passer d'éteinte à allumé à fond.
Enfin si tu es d'accord de jouer à ce jeu :grin:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.