Bonsoir,
J''en reste sans voix... Je vais essayer de tester tout cela la semaine prochaine. En tout cas quel que
soit le résultat je vous remercie encore du temps que vous avez accordé à ma demande;
Je vous souhaite une bonne soirée.
Gérard
-----

Bonsoir,
J''en reste sans voix... Je vais essayer de tester tout cela la semaine prochaine. En tout cas quel que
soit le résultat je vous remercie encore du temps que vous avez accordé à ma demande;
Je vous souhaite une bonne soirée.
Gérard
c'est un plaisir...
et puis ça fait un projet de plus dans le PC
dernier code:
dans le paragraphe "variables fonctionnelles"
ajout paramétrage vitesse max. moteur: variable pwmMax 2 à 255
255= 12V max.sur le moteur
127= 6V max. sur le moteur
les durées accélération et décélération (en secondes) restent valables quelle que soit la valeur pwmMax
Code:/* accelere puis decelere un moteur apres appui sur un poussoir Pascal071 v04/02/2026: duree acceleration en sec. = variable dureeAcc duree deceleration en sec. = variable dureeDec v05/02/2026: vitesse max. moteur = variable pwmMax 2 à 255 */ #define mosPin 3 // commande N-mos en sortie D3 #define bpPin 2 // bouton poussoir entre Gnd et D2 //-----------variables fonctionnelles:-------------- int dureeAcc = 10; // duree acceleration en secondes int dureeDec = 10; // duree deceleration en secondes int pwmMax = 255; // valeur pwm max 2 a 255 (vitesse max. moteur) //-------------------------------------------------- int tempoAcc = dureeAcc * 1000 / pwmMax; // recalcul tempo fonction de pwmMax: int tempoDec = dureeDec * 1000 / pwmMax; // duree * 1000ms / nb de pas max int pwmValue = 0; // init valeur pwm void setup() { pinMode(bpPin, INPUT_PULLUP); // entree bouton poussoir pinMode(mosPin, OUTPUT); // sortie N-mos Serial.begin(9600); // pour debugg sur moniteur série } void loop() { if (!digitalRead(bpPin)) { // si BP appuyé: Serial.print(tempoAcc); // debugg affichage tempos sur le moniteur Serial.print(" "); Serial.println(tempoDec); // acceleration: for ( pwmValue = 0; pwmValue <= pwmMax; pwmValue ++) { analogWrite(mosPin, pwmValue); delay(tempoAcc); } // deceleration: for ( pwmValue = pwmMax ; pwmValue >= 0; pwmValue --) { analogWrite(mosPin, pwmValue); delay(tempoDec); } } }
Dernière modification par Pascal071 ; 04/02/2026 à 23h54.
Pascal
Bonjour,
Merci Pascal , Je viens de prendre connaissance de votre dernier message et du code associé.
Je me répète bien sûr mais c'est vraiment très sympa de votre part et je vous en sais gré.
Maintenant il me reste à concrétiser , je l'espère, et si cela fonctionne en pratique cela va m'inciter
à essayer d'apprendre et d'exploiter ce langage magique. Mes connaissances relatives remontent aux postes de radio
à tubes...
Gérard
Bonjour
Avec un code "clé en main" pas besoin de bûcher le langage, sauf si tu souhaites approfondir.
comme beaucoup d'amateurs maintenant, copier coller suffit, c'est l'avantage d'arduino, très documenté sur le web.
même l'IA se met à pondre du code arduino...
je passerai un dernier code tout à l'heure, avec un réglage en plus: un palier moteur au max, règlable en durée.
comme ça tu auras 4 paramètres disponibles pour faire la courbe de vitesse de ton choix.
Dernière modification par Pascal071 ; 05/02/2026 à 11h33.
Pascal
voici un dernier code qui te permettra de jongler avec les paramètres "variables fonctionnelles"
j'ai mis arbitrairement 3 sec. d'accélération, 2 sec. de palier à vitesse 255 (max) et 10sec. de décélération,
ça ressemble au lancer d'une roue de loterie,
à toi de t'amuser avec les valeurs.
Code:/* accelere puis decelere un moteur apres appui sur un poussoir Pascal071 v05/02/2026-2: */ #define mosPin 3 // commande N-mos en sortie D3 #define bpPin 2 // bouton poussoir entre Gnd et D2 //-----------variables fonctionnelles:-------------- int dureeAcc = 3; // duree acceleration en secondes int dureeMax = 2; // duree avant deceleration en secondes int dureeDec = 10; // duree deceleration en secondes int pwmMax = 255; // valeur vitesse max 2 a 255 (PWM) //-------------------------------------------------- int tempoAcc = dureeAcc * 1000 / pwmMax; // recalcul tempo fonction de pwmMax: int tempoDec = dureeDec * 1000 / pwmMax; // duree x 1000ms / nb de pas max int tempoMax = dureeMax * 1000; // tempo moteur au max. (sec.) int pwmValue = 0; // init valeur pwm void setup() { pinMode(bpPin, INPUT_PULLUP); // entree bouton poussoir pinMode(mosPin, OUTPUT); // sortie N-mos Serial.begin(9600); // pour debugg sur moniteur série } void loop() { if (!digitalRead(bpPin)) { // si BP appuyé: Serial.print(tempoAcc); // debugg affichage tempos sur le moniteur Serial.print(" "); Serial.print(tempoMax); Serial.print("ms "); Serial.println(tempoDec); // acceleration: for ( pwmValue = 0; pwmValue <= pwmMax; pwmValue ++) { analogWrite(mosPin, pwmValue); delay(tempoAcc); } // duree a vitesse max. avant deceleration: delay (tempoMax); // deceleration: for ( pwmValue = pwmMax ; pwmValue >= 0; pwmValue --) { analogWrite(mosPin, pwmValue); delay(tempoDec); } } }
Dernière modification par Pascal071 ; 05/02/2026 à 15h09.
Pascal
Bonsoir,
Voilà j'ai effectué les branchements et chargé le code transmis par Pascal. Cela fonctionne parfaitement et je vous remercie encore car j'étais bien incapable
de progresser sur ce petit projet. En fait ca donne surtout envie de progresser et d'apprendre.
Il me reste à attaquer la structure d'habillage.
Je retiens votre sympathique coup de pouce et vous renouvelle mes remerciements.
Gérard
bonsoir
merci du retour, on attend des photos / vidéos
Pascal
bonjour
retour au post #1:
tu nous as dit 0 à 10V pour le moteur, le montage est alimenté en 12V.
si tu veux 10V max, il faut mettre la valeur pwmMax à 213.
pwmMax = 255 / 12 x Vmoteur souhaité
bon bricolage
Pascal
Bonsoir,
Merci beaucoup , le plus dur va commencer l'habillage de l'ensemble , on retombe en enfance...
Bonne soirée
