Bonjour,
J'ai deux moteurs cc actionnés par un joystick analogique bidirectionnel branchés sur une arduino motorshield rev3. La vitesse des moteurs est contrôlé par des potentiomètres. Seulement, j'aimerais ajouter une fonction d’accélération en fonction de la valeur de mon joystick afin que mon moteur se mette en route progressivement car mon code permet seulement de lancer ou pas le moteur à une certaine vitesse choisie par le potentiomètre. Pouvez-vous m'aider ? Je vous remercie
Voici la loop que j'ai actuellement et qui fonctionne très bienCode:void loop() { int joystickX = analogRead(PIN_JOYSTICK_X); int joystickY = analogRead(PIN_JOYSTICK_Y); sensorValue_1 = analogRead(A4); // lire la valeur en entrée de la Pin A4 sensorValue_2 = analogRead(A5); // lire la valeur en entrée de la Pin A5 // conversion de la valeur sensorvalue (qui va de 0 à 1023) // en une valeur entre 0 et 255 outputvalue outputValue_1 = map(sensorValue_1, 0, 1023, 0, 255); outputValue_2 = map(sensorValue_2, 0, 1023, 0, 255); // outputvalue permet de controler la vitesse du moteur if (joystickX > 700) { // Si la valeur X est strictement supérieur à 700 le moteur A avance analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1); digitalWrite(PIN_SENS_MOTEUR_A, HIGH); } else if (joystickX < 300) { // Sinon si la valeur X est strictement inférieur à 300 le moteur A recule analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1); digitalWrite(PIN_SENS_MOTEUR_A, LOW); } else { // Sinon si la valeur X est comprise entre 300 et 700 (bornes inclusent) le moteur A ne bouge pas digitalWrite(PIN_VITESSE_MOTEUR_A, LOW); } if (joystickY > 700) { // Si la valeur Y est strictement supérieur à 700 le moteur B avance analogWrite(PIN_VITESSE_MOTEUR_B, outputValue_2); digitalWrite(PIN_SENS_MOTEUR_B, HIGH); } else if (joystickY < 300) { // Sinon si la valeur Y est strictement inférieur à 300 le moteur B recule analogWrite(PIN_VITESSE_MOTEUR_B, outputValue_2); digitalWrite(PIN_SENS_MOTEUR_B, LOW); } else { // Sinon si la valeur Y est comprise entre 300 et 700 (bornes inclusent) le moteur B ne bouge pas digitalWrite(PIN_VITESSE_MOTEUR_B,LOW); } }
-----