Aller au contenu


Photo

moteur CC avec driver Cytron


  • Veuillez vous connecter pour répondre
19 réponses à ce sujet

#1 matmenton

matmenton

    Nouveau membre

  • Membres
  • 9 messages

Posté 15 novembre 2021 - 03:25

Bonjour a tous , 

 

Pour les créations de nos automates , nous somme parti sur des moteurs d'essuis glace 12v a courant continue . 

 

Nous avons acheté une carte Mega Clone 2560 ainsi qu'un driver Cytron 13A .

 

l'idée étant d'avoir une trame assez facile a modifier suivant le geste ou la rapidité que nous souhaitons pour notre automate . 

 

J'ai voulu commencer le teste avec un programme de rotation dans un sens puis dans l'autre . 

int IN1 = 5;
int IN2 = 6;

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}

void loop() {
  digitalWrite(IN1, 1);   // rotation sens 1
  digitalWrite(IN2, 0);
  delay(2000);
  digitalWrite(IN1, 0);   // arrêt
  digitalWrite(IN2, 0);
  delay(1000);
  digitalWrite(IN1, 0); // rotation sens 2
  digitalWrite(IN2, 1);
  delay(2000);
  digitalWrite(IN1, 0);   // arrêt
  digitalWrite(IN2, 0);
  delay(1000);
}

cependant le moteur ne tourne que dans 1 sens puis ne tourne plus pendant 3 seconds . 
 
merci de votre aide . 


#2 Forthman

Forthman

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 382 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 15 novembre 2021 - 03:41

salut,

si c'est un vrai moteur d'essuie-glace, il y a des chances pour qu'il y ait une petite diode à l'intérieur, ainsi qu'un petit système (portion de disque cuivre) qui maintienne l'alimentation pour revenir au point de départ.

Je ne me rappelle plus exactement comme c'est foutu (ça fait longtemps) mais j'avais été embêté avec ça, tu dois avoir 3 ou 4 vis à défaire pour ouvrir la bête, et virer ces choses.



#3 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 260 messages
  • Gender:Male

Posté 15 novembre 2021 - 03:43

Bonjour,

je ne sais pas à quoi correspondent tes pins IN1 et IN2 : je suppose qu'un l'un est branché sur le pin "DIR", et l'autre sur le pin "PWM" du driver.

 

Si tel est bien le cas, alors le problème vient des signaux que tu envois (qui serraient corrects avec un driver avec un pin par demi-pont, mais pas pour un driver de type "direction + pwm").

Le problème est que dans un des deux sens de rotations, du mets PWM à 0, donc la vitesse est nulle.

 

Les configurations valables :

digitalWrite(pinDIR,0); digitalWrite(pinPWM,1);    //pleine vitesse sens 1
digitalWrite(pinDIR,0); analogWrite(pinPWM,255);    //pleine vitesse sens 1
digitalWrite(pinDIR,0); analogWrite(pinPWM,pwm);    //vitesse réduite sens 1 (la vitesse est environ proportionnelle à pwm, qui est commpris entre 0 et 255)

digitalWrite(pinDIR,1); digitalWrite(pinPWM,1);    //pleine vitesse sens 2
digitalWrite(pinDIR,1); analogWrite(pinPWM,255);    //pleine vitesse sens 2
digitalWrite(pinDIR,1); analogWrite(pinPWM,pwm);    //vitesse réduite sens 2 (la vitesse est environ proportionnelle à pwm, qui est commpris entre 0 et 255)

 

configurations d'arrêt :
digitalWrite(pinDIR,0); digitalWrite(pinPWM,0);    //arrêt
digitalWrite(pinDIR,1); digitalWrite(pinPWM,0);    //arrêt
digitalWrite(pinDIR,0); analogWrite(pinPWM,0);    //arrêt
digitalWrite(pinDIR,1); analogWrite(pinPWM,0);    //arrêt

 

À noter que si tu veux utiliser les commandes analogWrite, il faut utiliser des pins de la méga qui suportent le PWM


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#4 matmenton

matmenton

    Nouveau membre

  • Membres
  • 9 messages

Posté 15 novembre 2021 - 04:18

Bonjour,

je ne sais pas à quoi correspondent tes pins IN1 et IN2 : je suppose qu'un l'un est branché sur le pin "DIR", et l'autre sur le pin "PWM" du driver.

 

Si tel est bien le cas, alors le problème vient des signaux que tu envois (qui serraient corrects avec un driver avec un pin par demi-pont, mais pas pour un driver de type "direction + pwm").

Le problème est que dans un des deux sens de rotations, du mets PWM à 0, donc la vitesse est nulle.

 

Les configurations valables :

digitalWrite(pinDIR,0); digitalWrite(pinPWM,1);    //pleine vitesse sens 1
digitalWrite(pinDIR,0); analogWrite(pinPWM,255);    //pleine vitesse sens 1
digitalWrite(pinDIR,0); analogWrite(pinPWM,pwm);    //vitesse réduite sens 1 (la vitesse est environ proportionnelle à pwm, qui est commpris entre 0 et 255)

digitalWrite(pinDIR,1); digitalWrite(pinPWM,1);    //pleine vitesse sens 2
digitalWrite(pinDIR,1); analogWrite(pinPWM,255);    //pleine vitesse sens 2
digitalWrite(pinDIR,1); analogWrite(pinPWM,pwm);    //vitesse réduite sens 2 (la vitesse est environ proportionnelle à pwm, qui est commpris entre 0 et 255)

 

configurations d'arrêt :
digitalWrite(pinDIR,0); digitalWrite(pinPWM,0);    //arrêt
digitalWrite(pinDIR,1); digitalWrite(pinPWM,0);    //arrêt
digitalWrite(pinDIR,0); analogWrite(pinPWM,0);    //arrêt
digitalWrite(pinDIR,1); analogWrite(pinPWM,0);    //arrêt

 

À noter que si tu veux utiliser les commandes analogWrite, il faut utiliser des pins de la méga qui suportent le PWM

 

Merci de votre réponse , effectivement pin 5 est branché sur DIR et pin 6 est branché sur PWM , cependant malgré votre réponse je ne pense pas avoir les compétences pour modifier mon programme , pour être honnete je débute dans le monde arduino et je ne le maitrise pas encore totalement . 

 

Notre projet dans le long therme est de pouvoir modifier la vitesse de rotation , modifier le sens de rotation , créer des temps de pose pour pas avoir un mouvement continu , voir d'utiliser des potentiomètres pour ajuster la vitesse d'un moteur , tout en gardant nos moteurs d'essuis glace . 

 

Je me lance dans quelque chose de surement compliqué mais j'aimerais vraiment pouvoir y arriver .  



#5 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 260 messages
  • Gender:Male

Posté 15 novembre 2021 - 04:41

Rebonjour,

tu as de la chance, le pin 6 suporte le mode PWM (ie alternance rapide entre 0 et 5V, avec une proportion de pwm/255 à l'état 5V).

 

tu peux donc essayer le programme suivant :

int IN1 = 5;
int IN2 = 6;
 
void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}
 
void loop() {
  digitalWrite(IN1, 1);   // rotation sens 1
  analogWrite(IN2, 255);  //255 correspond à pleine vitesse, une valeur plus faible à une vitesse réduite
  delay(2000);
  digitalWrite(IN1, 0);   // arrêt
  digitalWrite(IN2, 0);
  delay(1000);
  digitalWrite(IN1, 0); // rotation sens 2
  analogWrite(IN2, 255);  //255 correspond à pleine vitesse, une valeur plus faible à une vitesse réduite
  delay(2000);
  digitalWrite(IN1, 0);   // arrêt
  digitalWrite(IN2, 0);
  delay(1000);
}

Après, pour plus de lisibilité, je te suggère de renommer partout "IN1" en "pinDIR" et "IN2" en "pinPWM"

 

 

Sinon, globalement, ton projet me semble tout à fait abordable. Si tu essaye de comprendre de ton coté ce que tu fais, tu trouvera ici toute l'aide nécessaire pour résoudre d'éventuels blocages
 


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#6 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 766 messages
  • Gender:Male

Posté 15 novembre 2021 - 06:33

Pourrais-tu nous en dire plus sur ton automate ? Sa taille, son poids, roulant, bipède, quadrupède etc.

Une photo peut-être ?



#7 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 15 novembre 2021 - 10:59

Rebonjour,

tu as de la chance, le pin 6 suporte le mode PWM (ie alternance rapide entre 0 et 5V, avec une proportion de pwm/255 à l'état 5V).

 

tu peux donc essayer le programme suivant :

int IN1 = 5;
int IN2 = 6;
 
void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}
 
void loop() {
  digitalWrite(IN1, 1);   // rotation sens 1
  analogWrite(IN2, 255);  //255 correspond à pleine vitesse, une valeur plus faible à une vitesse réduite
  delay(2000);
  digitalWrite(IN1, 0);   // arrêt
  digitalWrite(IN2, 0);
  delay(1000);
  digitalWrite(IN1, 0); // rotation sens 2
  analogWrite(IN2, 255);  //255 correspond à pleine vitesse, une valeur plus faible à une vitesse réduite
  delay(2000);
  digitalWrite(IN1, 0);   // arrêt
  digitalWrite(IN2, 0);
  delay(1000);
}

Après, pour plus de lisibilité, je te suggère de renommer partout "IN1" en "pinDIR" et "IN2" en "pinPWM"

 

 

Sinon, globalement, ton projet me semble tout à fait abordable. Si tu essaye de comprendre de ton coté ce que tu fais, tu trouvera ici toute l'aide nécessaire pour résoudre d'éventuels blocages
 

 

Sandro a parfaitement répondu à ta question ;) 

Une fois que tu as vu que ça marche et que tu auras compris le code tu pourras aussi tester ce code : 

const int DIR = 5;
const int PWM = 6;
 
void setup() {
  pinMode(DIR, OUTPUT);
  pinMode(PWM, OUTPUT);
}
 
void loop() {
  moteur(255);  // Rotation à fond en sens direct
  delay(2000);
  moteur(0);    // Arrêt
  delay(1000);
  moteur(-255); // Rotation à fond en sens inverse
  delay(2000);
  moteur(0);    // Arrêt
  delay(1000);
}

void moteur(int vitesse) { // vitesse doit être compris entre -255 et 255
  digitalWrite(DIR, vitesse > 0);   
  analogWrite(PWM, abs(vitesse));
}

C'est la même chose mais en utilisant une fonction afin de rendre le code plus facilement lisible :)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#8 matmenton

matmenton

    Nouveau membre

  • Membres
  • 9 messages

Posté 16 novembre 2021 - 08:21

merci a tous je viens de charger le programme cela fonctionne parfaitement , MERCI beaucoup , je vais maintenant m'amuser a modifier le temps d'arrêt ainsi que modifier la vitesse .

 

Je vous posterais des photos et vidéo de nos créations . 

 

rester vigilent car je pense avoir besoin de vous dans les prochains jours .  :thank_you:



#9 matmenton

matmenton

    Nouveau membre

  • Membres
  • 9 messages

Posté 17 novembre 2021 - 05:11

bonjour a tous , 

 

Je m'amuse a faire des programmes malheureusement je rencontre un souci concernant maintenant mon alimentation 12v . 

 

j'utilise des alimentations de PC Fixe d'occasion bien sur , elle développe chacune 16A mon moteur consomme que 2A voir 2,5 A en pointe .

 

Mon alimentation se coupe lors de la variation de vitesse de moteur , elle passe en sécurité , je la débranche physiquement du secteur puis la rebranche quelques minutes après elle repart mais se recoupe quelques seconde après . 

 

Avez-vous une idée de ou cela pourrais venir ? 

 

Merci a tous . 



#10 Forthman

Forthman

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 382 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 17 novembre 2021 - 06:02

j'ai eu le cas d'une alim qui avait besoin de débiter une certaine intensité sur la sortie 5V pour pouvoir débiter l'intensité max sur le 12V

Du coup pour certains montages , j'avais câbler une résistance de 1ohm 10W sur le 5V pour quelle tire 5A

 

Ne me jugez pas, c'était dans les années 90, bien avant qu'on parle de réchauffement climatique :crazy:



#11 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 260 messages
  • Gender:Male

Posté 17 novembre 2021 - 06:33

Bonsoir,

 

Est-ce que tu as essayé en faisant tourner le moteur en permanence à vitesse max?

int IN1 = 5;
int IN2 = 6;
 
void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
}
 
void loop() {
  digitalWrite(IN1, 1);   // rotation sens 1
  analogWrite(IN2, 255);  //255 correspond à pleine vitesse, une valeur plus faible à une vitesse réduite
}

Si oui, ça a donné quoi?

 

Si dans cette configuration ça fonctionne, alors le problème vient soit du PWM (consommation changeant très vite), soit du fait que la consommation est parfois trop faible.

Si ça ne marche pas, alors le problème n'est probablement pas lié au fait de brancher un moteur qui change de vitesse, mais plutôt dans l'utilisation de l'alim (certaines nécessitent une charge minimale sur le 5V, ou nécessitent qu'un fil de mesure de tension soit relié à la tension correspondante, ...) ou dans le fait que l'alim elle même est défectueuse.

 

 

 

@Forthman : une résistance de 1 ohm sur du du 5V donne bien du 5A, mais ça te fait une puissance de 5*5=25W : ça m'a l'air un peu beaucoup pour une résistance 10W (à moins que tu ne lui rajoute des ventilateurs ou des radiateurs suplémentaires)
 


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#12 Forthman

Forthman

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 382 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 17 novembre 2021 - 06:54

@Sandro,

 

Je m'a trompé, c'était une résistance de 100W et pas 10W, elle était dans un profil alu à ailettes et était énorme, et malgré ça elle chauffait sa maman :crazy:



#13 matmenton

matmenton

    Nouveau membre

  • Membres
  • 9 messages

Posté 18 novembre 2021 - 08:15

Merci a tous pour vos réponses je vais tenter de placer une charge sur le 5v pour voir  . 

 

Je vous tiens au courant . 



#14 matmenton

matmenton

    Nouveau membre

  • Membres
  • 9 messages

Posté 22 novembre 2021 - 04:15

bonjour a tous , 

 

j'aimerais trouver un programme simple avec un potentiomètre pour faire varier la vitesse j'ai tenté des choses mais ..... no coment .....

 

Effectivement j'aimerais brancher un potentiomètre a 3 borne pour faire varier la vitesse de mon moteur entre 0 et 255 . 

 

J'aimerais également avoir un programme avec une accélération de 0 a 255 sur un temps voulu ainsi qu'une décélération .  

 

je sait que j'en demande beaucoup je pourrais vous faire livrer des citrons sur vous le souhaitez HAHAHAHA 



#15 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 260 messages
  • Gender:Male

Posté 22 novembre 2021 - 11:30

Bonsoir,

 

Tu as réussi à résoudre le problème d'alim?

 

 

Effectivement j'aimerais brancher un potentiomètre a 3 borne pour faire varier la vitesse de mon moteur entre 0 et 255 .

 

découpons le problème en plusieurs étapes :

1) Brancher le potentiomètre

2) Lire les valeurs du potentiomètre

3) Afficher une valeur sur l'ordinateur (nb : peut être fait indépendamment des étapes 1 et 2). Si tu fais des recherches, les mots clefs pertinents sont "moniteur série" (ou "serial monitor" en anglais)

4) Afficher la valeur du potentiomètre sur l'ordinateur

5) calculer la vitesse en fonction de la valeur du potentiomètre

6) faire tourner le moteur à la vitesse calculée.

 

Sur ces 6 étapes, lesquelles a tu réussi à faire? Pour laquelle bloques-tu?

 

 

J'aimerais également avoir un programme avec une accélération de 0 a 255 sur un temps voulu ainsi qu'une décélération . 

Cette partie est indépendante du potentiomètre?
Est-ce que tu veux rester un moment à 255, ou tu veux redescendre dès que tu atteint 255?

Est ce que tu as une idée comment décomposer le problème? Si oui, quelle est l'étape qui te bloque?


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#16 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 963 messages
  • Gender:Male
  • Location:Anglet

Posté 23 novembre 2021 - 02:40

Et pour le code d'exemple qui te fais ça, quand tu as l'ide arduino d'ouvert, tu cliques sur fichier=> Exemples => 01.Basics => AnalogReadSerial ;)

Enjoy ! =)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#17 matmenton

matmenton

    Nouveau membre

  • Membres
  • 9 messages

Posté 23 novembre 2021 - 08:24

Pour mon souci d'alimentation oui j'ai trouvé hier soir , j'ai placer un condensateur entre + et - 12v entrant dans le driver Cytron ,  cela a réglé le problème  . 

 

Pour le sujet du potentiomètre a vrai dire je n'ait aucune idée de comment faire le but étant de pouvoir régler en direct la vitesse du moteur sans forcement passer par IDE . je ne sait pas ou brancher ni comment ou même un semblant de programmation ......

 

 

Pour l'accélération ainsi que le décélération , elle est effectivement indépendante du potentiomètre et dans l'idéal j'aimerais la main sur la durée de l'accélération ainsi que la décélération , j'aimerais également pouvoir choisir la vitesse max ainsi que la vitesse mini ( car d'apres mais teste la vitesse mini de doit pas être en dessous de 15 sinon mon moteur ne tourne pas) , et pouvoir avoir un delay lors de la fin d'accélération et également lors de la fin de la décélération . 

 

Voici ce que j'ai tenté ... 

 

const int DIR = 5;
const int PWM = 6;

void setup() {
pinMode(DIR, OUTPUT);
pinMode(PWM, OUTPUT);
}

void loop() {
moteur((PWM = 0; PWM <= 255; PWM++); 

delay(2000);

moteur(PWM=255; PWM >=0;--PWM);
delay(200);
}

void moteur(int vitesse) { // vitesse doit être compris entre -255 et 255
digitalWrite(DIR, vitesse > 0);

 

 

 

en tout cas je vous remercie tous de votre engagement ainsi que de votre aide , Merci beaucoup , cette après midi je vais faire une vidéo de notre automate Violon . 

 

Merci !!! 



#18 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 260 messages
  • Gender:Male

Posté 23 novembre 2021 - 12:16

Pour mon souci d'alimentation oui j'ai trouvé hier soir , j'ai placer un condensateur entre + et - 12v entrant dans le driver Cytron ,  cela a réglé le problème  .

Alors le problème venait probablement des appels de courants.

 

 

Pour le potentiomètre, je te suggère de lire un petit tuto sur l'utilisation d'un potentiomètre avec Arduino, tu en trouve plein sur internet, par exemple : https://www.mataucar...vec-un-arduino/

 

Pour ton code, est-ce que tu pourrais utiliser la balise code "<>" placée sur la même ligne que B I U (gras, italique, souligné), au dessus de la zone où tu rentre ton texte. ça rend le code bien plus lisible.

Est-ce que le code que tu as posté là est un copié coller depuis l'IDE? Car tel quel, il ne devrait même pas compiler:

1) je vois que tu n'as pas encore  renommé "DIR" en "pinDIR" et "PWM" en "pinPWM" : je te conseille vivement de le faire, car j'ai l'impression que tu es en train de confendre les noms des pins avec les valeurs que tu écris sur les pins

2) pour le code suivant :

moteur((PWM = 0; PWM <= 255; PWM++);

2.1) tu ouvres 2 parenthèses et tu n'en ferme qu'une

2.2) la fonction moteur attend juste une valeur (ou le résultat d'un calcul), tu ne peux pas mettre plusieurs éléments séparés par un point virgule dedans

2.3) tu as déclaré PWM comme étant un "const int", donc un entier constant : tu ne peut donc pas modifier la valeur de PWM. En l'occurence, déclarer "pinPWM" comme "const int" est une bonne chose (le numéro de pin ne change jamais), en revanche la valeur du PWM nécessite une autre variable (par exemple "pwm", ou "valeurPWM") qui ne soit pas être "const". Tu peut utiliser "int" (ou uint8_t si tu veux optimiser l'usage de la mémoire, mais à ce stade c'est pas nécessaire)

2.4) j'ai l'impression que tu essaye d'utiliser la boucle "for" (cf https://www.robot-ma...ions-variables/ ) mais il faut alors mettre "PWM = 0; PWM <= 255; PWM++" dans le "for()"
3) Pour le code suivant :

void moteur(int vitesse) { // vitesse doit être compris entre -255 et 255
digitalWrite(DIR, vitesse > 0);

3.1) il manque une accolade fermante à la fin

3.2) il manque aussi la ligne qui écrit la vitesse (plus précisément la valeur absolue de la vitesse) sur le pin pinPWM

 


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#19 matmenton

matmenton

    Nouveau membre

  • Membres
  • 9 messages

Posté 23 novembre 2021 - 02:44

int pinDIR = 5;

int pinPWWM = 6;

 

void setup() {

  pinMode(pinDIR, OUTPUT);

  pinMode(pinPWM, OUTPUT);

}

 

void loop() {

  digitalWrite(pinDIR, 1);   // rotation sens 1

  analogWrite((PWM=0 ;PWM=>255 ;PWM++);

  delay(2000);

  digitalWrite(pinDIR, 1); // rotation sens 1

  analogWrite(PWM=255 ;PWM>=0 ;--PWM);

  delay(2000);

  digitalWrite(pinDIR, 0);   // arrêt

  digitalWrite(pinPWM, 0);

  delay(1000);

}

 

 

Ai-je bien compris ? 

 

j'explique ma programmation , rotation sens 1 montée progressif pendant 2 sec puis une descente progressif pendant 2 sec pour une mise a l'arret pendant 1 sec . 

 

J'attend vos commentaires avant de tenter quoi que ce soit ... :) merci a tous . 

 

pour info je tape mes programmes sur WORD avant de les copies . 



#20 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 260 messages
  • Gender:Male

Posté 23 novembre 2021 - 03:59

Je te conseilles de taper tes programmes directement dans l'IDE Arduino.

Ça permet entre autre de tester si le programme compile (bouton "vérifier"). Si tu avais testé, tu aurais détecté plusieurs erreurs:

1) tu as écris "int pinPWWM = 6;" au tout début (tu as mis deux "W" au lieu d'un)

2) la variable "PWM" n'est pas définie

3) le code suivant ne correspond à aucune syntaxe autorisée :

  analogWrite((PWM=0 ;PWM=>255 ;PWM++);

Pour une accélération, tu peux utiliser le code suivant :

for(int PWM=0; PWM<=255; PWM++)   //nb : le fait d'écrire "int" permet de déclarer PWM, mais uniquement jusqu'à la fin de l'accolade du for (ie la fin de cet extrait de code)
{
  analogWrite(pinPWM,PWM);
  delay(10);  //delai à adapter selon la durée que tu veux pour l'accelération. La durée de l'accélération sera 256*10 millisecondes, soit 2.56s
}
//ici la variable PWM n'existe plus

Ou alternativement, tu peux définir la variable PWM avant (soit au début du programme, soit au début de loop), et utiliser le code suivant :

//la variable PWM existe déjà
for(PWM=0; PWM<=255; PWM++) //nb : il n'y a plus le "int" : on modifie la variable PWM qui existe déjà
{
analogWrite(pinPWM,PWM);
delay(10); //delai à adapter selon la durée que tu veux pour l'accelération. La durée de l'accélération sera 256*10 millisecondes, soit 2.56s
}
//ici la variable PWM existe toujours, et vaut 256 (ie la première valeur pour laquelle le test PWM<=255 est faux)

 


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users