Advertisement
bipping

version final avec buzzer

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