Advertisement
bipping

Programme moteur 18 septembre 2021 V4

Sep 18th, 2021
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.17 KB | None | 0 0
  1. const int(bouton)=2;                                              // broche 2 bouton
  2. const int(orange)=7;                                              // broche 7 orange
  3. const int(vert)=6;                                                // broche 6 vert
  4. const int(rouge)=5;                                               // broche 5 rouge
  5. const int(blanc)=4;                                               // broche 4 blanc
  6. unsigned long previousMillisorange = 0;                           // Précédente valeur de millis()
  7. unsigned long previousMillisvert = 0;                             // Précédente valeur de millis()
  8. const unsigned long interval = 1000;                              // interval de clignotement
  9. int(A);                                                           // 0 ou 1
  10. int(B);                                                           // memoire
  11. int(C)=0;                                                         // compteur de pas (important)
  12. int(L);                                                           // Lambda et potentiomètre A2
  13. int(V)=360;                                                       // vitesse
  14. float(F)=0.733775690617;                                          // après la virgule
  15. boolean(running)=false;                                           // déclaration d'une variable de type binaire appelée running et initialisée à false
  16. boolean(bascule)=false;                                           // bascule RS
  17. int(orangeLED)=LOW;                                               //
  18. int(vertLED)=LOW;                                                 //
  19.  
  20. void setup(){
  21.   Serial.begin(9600);                                             // ça pulse à 9600 Hertz
  22.   pinMode(3, OUTPUT);                                             // Déclaration de la broche n°3 en sortie Digitale PWM
  23.   pinMode(11, OUTPUT);                                            // Déclaration de la broche n°11 en sortie Digitale PWM
  24.   pinMode(12, OUTPUT);                                            // Déclaration de la broche n°12 en sortie Digitale
  25.   pinMode(13, OUTPUT);                                            // Déclaration de la broche n°13 en sortie Digitale
  26.   pinMode(orange, OUTPUT);                                        // LED orange
  27.   digitalWrite(orange,7);
  28.   pinMode(vert, OUTPUT);                                          // LED vert
  29.   digitalWrite(vert,6);
  30.   pinMode(rouge, OUTPUT);                                         // LED rouge
  31.   pinMode(blanc, OUTPUT);                                         // LED blanc
  32.   pinMode(bouton, INPUT);                                         // bouton 3
  33.   digitalWrite(bouton,HIGH);                                      // bouton sur OFF
  34.   attachInterrupt(digitalPinToInterrupt(2),stop,FALLING);         //
  35. }
  36.  
  37. void loop(){
  38.  
  39. // programme principale
  40.   if(C<10000&&running==true&&bascule==false){
  41.   digitalWrite(vert,HIGH);                                        //allumer LED temoin vert fix
  42.   digitalWrite(orange,LOW);
  43.   digitalWrite(rouge,LOW);                                        //eteindre une LED rouge
  44.   // Commande moteur pas à pas Bipolaire 4 fils en Mode Wave | Sens Normal
  45.   // Pas n°1 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas
  46.   digitalWrite(12, HIGH);     // bobine du moteur A marche
  47.   digitalWrite(13, LOW);      // bobine du moteur B arrêt
  48.   analogWrite(3, 0);          //Tension du moteur A 0
  49.   analogWrite(11, 255);       //Tension du moteur B 255
  50.  
  51.   L=analogRead(A2);           // mesure de la tension du potentiomètre
  52.   L=map(L, 0, 1023, -9, 9);   // convertion des valeur mesurer par p (L,0,1023,-p,p)
  53.   if(L==0){
  54.     digitalWrite(blanc,HIGH);
  55.   }
  56.   else if(L!=0){
  57.     digitalWrite(blanc,LOW);
  58.   }
  59.   C++;                        // + un pas
  60.  
  61.   A=(F*C)-B;                  // 0 ou 1
  62.  
  63.   delay(V+A+L);               // le delais est de 180 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
  64.  
  65.   B=(F*C);                    // on ajoute A à B
  66.  
  67.   // Pas n°2 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
  68.   digitalWrite(12, LOW);     // bobine du moteur A arrêt
  69.   digitalWrite(13, HIGH);    // bobine du moteur B marche
  70.   analogWrite(3, 255);       //Tension du moteur A 255
  71.   analogWrite(11, 0);        //Tension du moteur B 0
  72.  
  73.   L=analogRead(A2);           // mesure de la tension du potentiomètre
  74.   L=map(L, 0, 1023, -9, 9);   // convertion des valeur mesurer par p (L,0,1023,-p,p)
  75.   if(L==0){
  76.   digitalWrite(blanc,HIGH);
  77.   }
  78.   else if(L!=0){
  79.   digitalWrite(blanc,LOW);
  80.   }
  81.   C++;                        // + un pas
  82.  
  83.   A=(F*C)-B;                  // 0 ou 1
  84.  
  85.   delay(V+A+L);               // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
  86.  
  87.   B=(F*C);                    // on ajoute A à B
  88.  
  89.   // Pas n°3 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
  90.   digitalWrite(12, LOW);      // bobine du moteur A arrêt
  91.   digitalWrite(13, HIGH);     // bobine du moteur B marche
  92.   analogWrite(3, 0);          //Tension du moteur A 0
  93.   analogWrite(11, 255);       //Tension du moteur B 255
  94.  
  95.   L=analogRead(A2);           // mesure de la tension du potentiomètre
  96.   L=map(L, 0, 1023, -9, 9);   // convertion des valeur mesurer par p (L,0,1023,-p,p)
  97.   if(L==0){
  98.   digitalWrite(blanc,HIGH);
  99.   }
  100.   else if(L!=0){
  101.   digitalWrite(blanc,LOW);
  102.   }
  103.   C++;                        // + un pas
  104.  
  105.   A=(F*C)-B;                  // 0 ou 1
  106.  
  107.   delay(V+A+L);               // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
  108.  
  109.   B=(F*C);                    // on ajoute A à B
  110.  
  111.   // Pas n°4 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
  112.   digitalWrite(12, HIGH);     // bobine du moteur A marche
  113.   digitalWrite(13, LOW);      // bobine du moteur B arrêt
  114.   analogWrite(3, 255);        //Tension du moteur A 255
  115.   analogWrite(11, 0);         //Tension du moteur B 0
  116.  
  117.   L=analogRead(A2);           // mesure de la tension du potentiomètre
  118.   L=map(L, 0, 1023, -9, 9);   // convertion des valeur mesurer par p (L,0,1023,-p,p)
  119.   if(L==0){
  120.   digitalWrite(blanc,HIGH);
  121.   }
  122.   else if(L!=0){
  123.   digitalWrite(blanc,LOW);
  124.   }
  125.   C++;                        // + un pas
  126.  
  127.   A=(F*C)-B;                  // 0 ou 1
  128.  
  129.   delay(V+A+L);               // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
  130.  
  131.   B=(F*C);                    // on ajoute A à B
  132.  
  133.  if(C>=10000){ // condition de fin de boucle du programme principale
  134.   digitalWrite(vert,LOW);
  135.   bascule=true;
  136.   } // fin de la condition
  137. } // fin programme principale
  138.  
  139. // stand by
  140.  else if(running==false&& C==0){                  // stand by
  141.  digitalWrite(orange,HIGH);                        // allumer LED temoin orange fixe
  142.  digitalWrite(vert,LOW);
  143.  digitalWrite(blanc,LOW);                        //eteint LED blanc
  144.  digitalWrite(rouge,LOW);                        // eteint LED rouge
  145.  digitalWrite(12, LOW);                          //stop
  146.  digitalWrite(13, LOW);                          //stop
  147.  analogWrite(11, 0);                             //stop
  148.  analogWrite(11, 0);                             //stop
  149.  
  150. } //fin de stand by
  151.  
  152. // bascule
  153.   else if(bascule==true&&C>0){
  154.    // Commande moteur pas à pas Bipolaire 4 fils en Mode Wave Sens inverse
  155.     // Pas n°1 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
  156.     digitalWrite(12, HIGH);
  157.     digitalWrite(13, LOW);  
  158.     analogWrite(3, 255);
  159.     analogWrite(11, 0);
  160.     delay(10);
  161.     C--;
  162.  
  163.     // Pas n°2 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
  164.     digitalWrite(12, LOW);
  165.     digitalWrite(13, HIGH);  
  166.     analogWrite(3, 0);
  167.     analogWrite(11, 255);
  168.     delay(10);  
  169.     C--;
  170.  
  171.     // Pas n°3 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
  172.     digitalWrite(12, LOW);
  173.     digitalWrite(13, HIGH);  
  174.     analogWrite(3, 255);
  175.     analogWrite(11, 0);
  176.     delay(10);  
  177.     C--;
  178.  
  179.     // Pas n°4 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas
  180.     digitalWrite(12, HIGH);
  181.     digitalWrite(13, LOW);  
  182.     analogWrite(3, 0);
  183.     analogWrite(11, 255);
  184.     delay(10);
  185.     C--;  
  186.  
  187. // fin du programme d'execution de la boucle basculle
  188.  
  189. // condition de la fin de la boucle bascule
  190.      if(C==0){
  191.      bascule=false;                                      
  192.      A=0;
  193.      B=0;
  194.      digitalWrite(orange,LOW);
  195.      digitalWrite(vert,LOW);
  196. } // fin de la boucle de condition de la boucle bascule
  197.  
  198. // bascule et vert clignotant
  199.    else if(running==true){
  200.    unsigned long currentMillis = millis();                           // on permet le clignotement en tache de fond
  201.    // Si interval_3 ou plus millisecondes se sont écoulés
  202.    if(currentMillis - previousMillisvert >= interval){
  203.    // Garde en mémoire la valeur actuelle de millis()
  204.    previousMillisvert = currentMillis;
  205.    }
  206.    if(vertLED == LOW){
  207.    // Inverse l'état de la LED 3
  208.    vertLED = !vertLED;
  209.    }
  210.    digitalWrite(vert, vertLED);
  211.  
  212. }// fin de la boucle clignotant
  213.  
  214. // bascule et orange clignotant
  215.    if(running==false){
  216.    unsigned long currentMillis = millis();                           // on permet le clignotement en tache de fond
  217.    // Si interval_3 ou plus millisecondes se sont écoulés
  218.    if(currentMillis - previousMillisvert >= interval){
  219.    // Garde en mémoire la valeur actuelle de millis()
  220.    previousMillisvert = currentMillis;
  221.    }
  222.    else if(orangeLED == LOW){
  223.    // Inverse l'état de la LED 3
  224.    orangeLED = !orangeLED;
  225.    }
  226.    digitalWrite(orange, orangeLED);
  227.  
  228. } // fin de la boucle clignotant
  229.  
  230. } // fin de bascule
  231.  
  232. //ça vas pas on s'arrête rouge
  233.  else{                                      
  234.  digitalWrite(rouge,HIGH);               //alumer une LED rouge
  235.  digitalWrite(blanc,LOW);
  236.  digitalWrite(vert,LOW);
  237.  digitalWrite(orange,LOW);
  238.  digitalWrite(12, LOW);                     //stop
  239.  digitalWrite(13, LOW);                     //stop
  240.  analogWrite(11, 0);                        //stop
  241.  analogWrite(11, 0);                        //stop
  242.  }
  243.  
  244. } //Fin de void loop
  245.  
  246. void stop(){
  247.  
  248.   digitalWrite(rouge,HIGH);                              //flash rouge à l'appuit du bouton et inverse running
  249.   delay(1000);
  250.   digitalWrite(rouge,LOW);
  251.   running=!running;
  252.   if(C>0){
  253.   bascule=true;
  254.  }
  255. }//fin de la boucle stop
  256.  
  257.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement