Varier la vtesse d'un moteur DC .arduino

Portrait de ElectroniciennesEnForce

Bonjour tout le monde!

Je dois commander un moteur DC par un boutton poussoir.Ce  dernier doit diminuer ça vitesse avant son arret .Je me demande si je peux le faire en diminuant l'intervalle à l'intérieur de la fonction map() ??c-à-d peux-je écrire:

map(vitesseMoteur,0,1023,0,255);

delay(5);

map(vitesseMoteur,0,511,0,127);

delay(5);

map(vitesseMoteur,0,255,0,63);

..

Portrait de brossden

Bonjour Electronicienne

Ca ressemble un peu à une farce ! Mais bon...

Pour faire ralentir ton moteur tu n'as nul besoin d'utiliser la fonction map()

Il te suffit de de faire varier de 255 à 0 la valeur sur une sortie PWM "2" par exemple sur un Arduino Mega 

aven une décélération liée à une temporiation avec le code suivant

int Tempo = 100; // à toi de voir quelle valeur te conviendra le mieux

for (int n =255; n=0; n--){

analogWrite(2,n);

delay(tempo);

}

La fonction map est là pour réaliser à ta place un calcul proportionnel entre le mini maxi de la valeur d'entrée et le mini maxi de la valeur de sortie.

par exemple si tu veux faire varier la valeur d'une sortie "VarS" PWM de 50 à 200 (valeurs prisent au hasard) et ce la avec une variable "VarE" qui peut varier de 0 à 100 tu dois écrire:

VarS = map(VarE, 0, 100, 50, 200);

Ce qui veut dire que lorsque VarE vaut 0, VarS vaut 50 et VarE vaut 100, VarS vaut 200 avec toutes les valeurs intermédiaire. De 0 a 100 étant le nombre de pas et 50 a 200 étant les valeurs mini et maxi de sortie correspondantes.

Cette fonction t'évite de faire le calcul suivant : VarS = [ (VarE  / 100) * (200 - 50)] + 50.

En espérant avoir été clair !

Bonne soirée à tous !

Portrait de ElectroniciennesEnForce

Merci beaucoup,je suis encore débutante en arduino mais vos explications sont claires .

Portrait de brossden

Heureux de t'avoir rendu service !