Advertisement
bipping

version final sans buzzer

Sep 18th, 2021
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.96 KB | None | 0 0
  1. /*************************************************
  2.  
  3.  * Public Constants
  4.  
  5.  *************************************************/
  6.  
  7. #define NOTE_B0  31
  8. #define NOTE_C1  33
  9. #define NOTE_CS1 35
  10. #define NOTE_D1  37
  11. #define NOTE_DS1 39
  12. #define NOTE_E1  41
  13. #define NOTE_F1  44
  14. #define NOTE_FS1 46
  15. #define NOTE_G1  49
  16. #define NOTE_GS1 52
  17. #define NOTE_A1  55
  18. #define NOTE_AS1 58
  19. #define NOTE_B1  62
  20. #define NOTE_C2  65
  21. #define NOTE_CS2 69
  22. #define NOTE_D2  73
  23. #define NOTE_DS2 78
  24. #define NOTE_E2  82
  25. #define NOTE_F2  87
  26. #define NOTE_FS2 93
  27. #define NOTE_G2  98
  28. #define NOTE_GS2 104
  29. #define NOTE_A2  110
  30. #define NOTE_AS2 117
  31. #define NOTE_B2  123
  32. #define NOTE_C3  131
  33. #define NOTE_CS3 139
  34. #define NOTE_D3  147
  35. #define NOTE_DS3 156
  36. #define NOTE_E3  165
  37. #define NOTE_F3  175
  38. #define NOTE_FS3 185
  39. #define NOTE_G3  196
  40. #define NOTE_GS3 208
  41. #define NOTE_A3  220
  42. #define NOTE_AS3 233
  43. #define NOTE_B3  247
  44. #define NOTE_C4  262
  45. #define NOTE_CS4 277
  46. #define NOTE_D4  294
  47. #define NOTE_DS4 311
  48. #define NOTE_E4  330
  49. #define NOTE_F4  349
  50. #define NOTE_FS4 370
  51. #define NOTE_G4  392
  52. #define NOTE_GS4 415
  53. #define NOTE_A4  440
  54. #define NOTE_AS4 466
  55. #define NOTE_B4  494
  56. #define NOTE_C5  523
  57. #define NOTE_CS5 554
  58. #define NOTE_D5  587
  59. #define NOTE_DS5 622
  60. #define NOTE_E5  659
  61. #define NOTE_F5  698
  62. #define NOTE_FS5 740
  63. #define NOTE_G5  784
  64. #define NOTE_GS5 831
  65. #define NOTE_A5  880
  66. #define NOTE_AS5 932
  67. #define NOTE_B5  988
  68. #define NOTE_C6  1047
  69. #define NOTE_CS6 1109
  70. #define NOTE_D6  1175
  71. #define NOTE_DS6 1245
  72. #define NOTE_E6  1319
  73. #define NOTE_F6  1397
  74. #define NOTE_FS6 1480
  75. #define NOTE_G6  1568
  76. #define NOTE_GS6 1661
  77. #define NOTE_A6  1760
  78. #define NOTE_AS6 1865
  79. #define NOTE_B6  1976
  80. #define NOTE_C7  2093
  81. #define NOTE_CS7 2217
  82. #define NOTE_D7  2349
  83. #define NOTE_DS7 2489
  84. #define NOTE_E7  2637
  85. #define NOTE_F7  2794
  86. #define NOTE_FS7 2960
  87. #define NOTE_G7  3136
  88. #define NOTE_GS7 3322
  89. #define NOTE_A7  3520
  90. #define NOTE_AS7 3729
  91. #define NOTE_B7  3951
  92. #define NOTE_C8  4186
  93. #define NOTE_CS8 4435
  94. #define NOTE_D8  4699
  95. #define NOTE_DS8 4978
  96.  
  97. const int(bouton)=2;                                               // broche 2 bouton
  98. const int(orange)=7;                                               // broche 7 orange
  99. const int(vert)=6;                                                 // broche 6 vert
  100. const int(rouge)=5;                                                // broche 5 rouge
  101. const int(blanc)=4;                                                // broche 4 blanc
  102. const int (buz)  = 10;                                             // broche 10 buzzer
  103. unsigned long previousMillisorange = 0;                            // Précédente valeur de millis()
  104. unsigned long previousMillisvert = 0;                              // Précédente valeur de millis()
  105. unsigned long previousMillisbuz = 0;                               // Précédente valeur de millis()
  106. const unsigned long interval = 500;                                // interval de clignotement
  107. const unsigned long intervalbuz = 100;                             // interval de clignotement
  108. int(A);                                                            // 0 ou 1
  109. int(B);                                                            // memoire
  110. int(C)=0;                                                          // compteur de pas (important)
  111. int(L);                                                            // Lambda et potentiomètre A2
  112. int(V)=360;                                                        // vitesse
  113. float(F)=0.733775690617;                                           // après la virgule
  114. boolean(running)=false;                                            // déclaration d'une variable de type binaire appelée running et initialisée à false
  115. boolean(bascule)=false;                                            // bascule RS
  116. int(orangeLED)=LOW;                                                //
  117. int(vertLED)=LOW;                                                  //
  118.  
  119. void setup(){
  120.   Serial.begin(9600);                                              // ça pulse à 9600 Hertz
  121.   pinMode(3, OUTPUT);                                              // Déclaration de la broche n°3 en sortie Digitale PWM
  122.   pinMode(11, OUTPUT);                                             // Déclaration de la broche n°11 en sortie Digitale PWM
  123.   pinMode(12, OUTPUT);                                             // Déclaration de la broche n°12 en sortie Digitale
  124.   pinMode(13, OUTPUT);                                             // Déclaration de la broche n°13 en sortie Digitale
  125.   pinMode(buz,OUTPUT);                                             // Buzzer en sortie 10 s'appel buz
  126.   digitalWrite(buz,LOW);
  127.   pinMode(orange, OUTPUT);                                         // LED orange
  128.   digitalWrite(orange,7);
  129.   pinMode(vert, OUTPUT);                                           // LED vert
  130.   digitalWrite(vert,6);
  131.   pinMode(rouge, OUTPUT);                                          // LED rouge
  132.   pinMode(blanc, OUTPUT);                                          // LED blanc
  133.   pinMode(bouton, INPUT);                                          // bouton 3
  134.   digitalWrite(bouton,HIGH);                                       // bouton sur OFF
  135.   attachInterrupt(digitalPinToInterrupt(2),stop,FALLING);          //
  136. }
  137.  
  138. void loop(){
  139.  
  140. // programme principale
  141.   if(C<10000&&running==true&&bascule==false){
  142.   digitalWrite(vert,HIGH);                                        //allumer LED temoin vert fix
  143.   digitalWrite(orange,LOW);
  144.   digitalWrite(rouge,LOW);                                        //eteindre une LED rouge
  145.   // Commande moteur pas à pas Bipolaire 4 fils en Mode Wave | Sens Normal
  146.   // Pas n°1 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas
  147.   digitalWrite(12, HIGH);     // bobine du moteur A marche
  148.   digitalWrite(13, LOW);      // bobine du moteur B arrêt
  149.   analogWrite(3, 0);          //Tension du moteur A 0
  150.   analogWrite(11, 255);       //Tension du moteur B 255
  151.  
  152.   L=analogRead(A2);           // mesure de la tension du potentiomètre
  153.   L=map(L, 0, 1023, -9, 9);   // convertion des valeur mesurer par p (L,0,1023,-p,p)
  154.   if(L==0){
  155.     digitalWrite(blanc,HIGH);
  156.   }
  157.   else if(L!=0){
  158.     digitalWrite(blanc,LOW);
  159.   }
  160.   C++;                        // + un pas
  161.  
  162.   A=(F*C)-B;                  // 0 ou 1
  163.  
  164.   delay(V+A+L);               // le delais est de 180 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
  165.  
  166.   B=(F*C);                    // on ajoute A à B
  167.  
  168.   // Pas n°2 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
  169.   digitalWrite(12, LOW);     // bobine du moteur A arrêt
  170.   digitalWrite(13, HIGH);    // bobine du moteur B marche
  171.   analogWrite(3, 255);       //Tension du moteur A 255
  172.   analogWrite(11, 0);        //Tension du moteur B 0
  173.  
  174.   L=analogRead(A2);           // mesure de la tension du potentiomètre
  175.   L=map(L, 0, 1023, -9, 9);   // convertion des valeur mesurer par p (L,0,1023,-p,p)
  176.   if(L==0){
  177.   digitalWrite(blanc,HIGH);
  178.   }
  179.   else if(L!=0){
  180.   digitalWrite(blanc,LOW);
  181.   }
  182.   C++;                        // + un pas
  183.  
  184.   A=(F*C)-B;                  // 0 ou 1
  185.  
  186.   delay(V+A+L);               // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
  187.  
  188.   B=(F*C);                    // on ajoute A à B
  189.  
  190.   // Pas n°3 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
  191.   digitalWrite(12, LOW);      // bobine du moteur A arrêt
  192.   digitalWrite(13, HIGH);     // bobine du moteur B marche
  193.   analogWrite(3, 0);          //Tension du moteur A 0
  194.   analogWrite(11, 255);       //Tension du moteur B 255
  195.  
  196.   L=analogRead(A2);           // mesure de la tension du potentiomètre
  197.   L=map(L, 0, 1023, -9, 9);   // convertion des valeur mesurer par p (L,0,1023,-p,p)
  198.   if(L==0){
  199.   digitalWrite(blanc,HIGH);
  200.   }
  201.   else if(L!=0){
  202.   digitalWrite(blanc,LOW);
  203.   }
  204.   C++;                        // + un pas
  205.  
  206.   A=(F*C)-B;                  // 0 ou 1
  207.  
  208.   delay(V+A+L);               // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
  209.  
  210.   B=(F*C);                    // on ajoute A à B
  211.  
  212.   // Pas n°4 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
  213.   digitalWrite(12, HIGH);     // bobine du moteur A marche
  214.   digitalWrite(13, LOW);      // bobine du moteur B arrêt
  215.   analogWrite(3, 255);        //Tension du moteur A 255
  216.   analogWrite(11, 0);         //Tension du moteur B 0
  217.  
  218.   L=analogRead(A2);           // mesure de la tension du potentiomètre
  219.   L=map(L, 0, 1023, -9, 9);   // convertion des valeur mesurer par p (L,0,1023,-p,p)
  220.   if(L==0){
  221.   digitalWrite(blanc,HIGH);
  222.   }
  223.   else if(L!=0){
  224.   digitalWrite(blanc,LOW);
  225.   }
  226.   C++;                        // + un pas
  227.  
  228.   A=(F*C)-B;                  // 0 ou 1
  229.  
  230.   delay(V+A+L);               // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
  231.  
  232.   B=(F*C);                    // on ajoute A à B
  233.  
  234. // condition de fin de boucle du programme principale
  235.  if(C>=10000){
  236.   digitalWrite(vert,LOW);
  237.   bascule=true;
  238.   } // fin de la condition
  239. } // fin programme principale
  240.  
  241. // stand by
  242.  else if(running==false&& C==0){                  // stand by
  243.  digitalWrite(orange,HIGH);                        // allumer LED temoin orange fixe
  244.  digitalWrite(vert,LOW);
  245.  digitalWrite(blanc,LOW);                        //eteint LED blanc
  246.  digitalWrite(rouge,LOW);                        // eteint LED rouge
  247.  digitalWrite(12, LOW);                          //stop
  248.  digitalWrite(13, LOW);                          //stop
  249.  analogWrite(11, 0);                             //stop
  250.  analogWrite(11, 0);                             //stop
  251.  
  252. } //fin de stand by
  253.  
  254. // bascule
  255.   else if(bascule==true&&C>0){
  256.    // Commande moteur pas à pas Bipolaire 4 fils en Mode Wave Sens inverse
  257.     // Pas n°1 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
  258.     digitalWrite(12, HIGH);
  259.     digitalWrite(13, LOW);  
  260.     analogWrite(3, 255);
  261.     analogWrite(11, 0);
  262.     delay(10);
  263.     C--;
  264.  
  265.     // Pas n°2 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
  266.     digitalWrite(12, LOW);
  267.     digitalWrite(13, HIGH);  
  268.     analogWrite(3, 0);
  269.     analogWrite(11, 255);
  270.     delay(10);  
  271.     C--;
  272.  
  273.     // Pas n°3 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
  274.     digitalWrite(12, LOW);
  275.     digitalWrite(13, HIGH);  
  276.     analogWrite(3, 255);
  277.     analogWrite(11, 0);
  278.     delay(10);  
  279.     C--;
  280.  
  281.     // Pas n°4 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas
  282.     digitalWrite(12, HIGH);
  283.     digitalWrite(13, LOW);  
  284.     analogWrite(3, 0);
  285.     analogWrite(11, 255);
  286.     delay(10);
  287.     C--;  
  288.  
  289. // fin du programme d'execution de la boucle basculle
  290.  
  291. // condition de la fin de la boucle bascule
  292.      if(C==0){
  293.      bascule=false;                                      
  294.      A=0;
  295.      B=0;
  296.      digitalWrite(orange,LOW);
  297.      digitalWrite(vert,LOW);
  298. } // fin de la boucle de condition de la boucle bascule
  299.  
  300. // bascule et vert clignotant
  301.    else if(running==true){
  302.    digitalWrite(orange, LOW);
  303.    unsigned long currentMillis = millis();                           // on permet le clignotement en tache de fond
  304.    // Si interval_3 ou plus millisecondes se sont écoulés
  305.    if(currentMillis - previousMillisvert >= interval){
  306.    // Garde en mémoire la valeur actuelle de millis()
  307.    previousMillisvert = currentMillis;
  308.    digitalWrite(vert, vertLED);
  309.    if(vertLED == LOW){
  310.    // Inverse l'état de la LED 3
  311.    vertLED=HIGH;
  312.    }
  313.    else if(vertLED == HIGH){
  314.    // Inverse l'état de la LED 3
  315.    vertLED=LOW;
  316.    }
  317.    }      
  318.  
  319. }// fin de la boucle clignotant
  320.  
  321. // bascule et orange clignotant
  322.    if(running==false){
  323.      digitalWrite(vert, LOW);
  324.    unsigned long currentMillis = millis();                           // on permet le clignotement en tache de fond
  325.    // Si interval_3 ou plus millisecondes se sont écoulés
  326.    if(currentMillis - previousMillisvert >= interval){
  327.    // Garde en mémoire la valeur actuelle de millis()
  328.    previousMillisvert = currentMillis;
  329.    digitalWrite(orange, orangeLED);
  330.    if(orangeLED == LOW){
  331.    // Inverse l'état de la LED 3
  332.    orangeLED = HIGH;
  333.    }
  334.    else if(orangeLED == HIGH){
  335.    // Inverse l'état de la LED 3
  336.      orangeLED = LOW;
  337.    }
  338.    }
  339.  
  340.      
  341.  
  342. } // fin de la boucle clignotant
  343.  
  344. } // fin de bascule
  345.  
  346. //ça vas pas on s'arrête rouge
  347.  else{                                      
  348.  digitalWrite(rouge,HIGH);               //alumer une LED rouge
  349.  digitalWrite(blanc,LOW);
  350.  digitalWrite(vert,LOW);
  351.  digitalWrite(orange,LOW);
  352.  digitalWrite(12, LOW);                     //stop
  353.  digitalWrite(13, LOW);                     //stop
  354.  analogWrite(11, 0);                        //stop
  355.  analogWrite(11, 0);                        //stop
  356.  }
  357.  
  358. } //Fin de void loop
  359.  
  360. void stop(){
  361.  
  362.   digitalWrite(vert,LOW);
  363.   digitalWrite(orange, LOW);
  364.   digitalWrite(rouge,HIGH);                              //flash rouge à l'appuit du bouton et inverse running
  365.   delay(500);
  366.   digitalWrite(rouge,LOW);
  367.  
  368.   running=!running;
  369.   if(C>0){
  370.   bascule=true;
  371.  }
  372. }//fin de la boucle stop
  373.  
  374.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement