Advertisement
bipping

version final calibration

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