Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*************************************************
- * Public Constants
- *************************************************/
- #define NOTE_B0 31
- #define NOTE_C1 33
- #define NOTE_CS1 35
- #define NOTE_D1 37
- #define NOTE_DS1 39
- #define NOTE_E1 41
- #define NOTE_F1 44
- #define NOTE_FS1 46
- #define NOTE_G1 49
- #define NOTE_GS1 52
- #define NOTE_A1 55
- #define NOTE_AS1 58
- #define NOTE_B1 62
- #define NOTE_C2 65
- #define NOTE_CS2 69
- #define NOTE_D2 73
- #define NOTE_DS2 78
- #define NOTE_E2 82
- #define NOTE_F2 87
- #define NOTE_FS2 93
- #define NOTE_G2 98
- #define NOTE_GS2 104
- #define NOTE_A2 110
- #define NOTE_AS2 117
- #define NOTE_B2 123
- #define NOTE_C3 131
- #define NOTE_CS3 139
- #define NOTE_D3 147
- #define NOTE_DS3 156
- #define NOTE_E3 165
- #define NOTE_F3 175
- #define NOTE_FS3 185
- #define NOTE_G3 196
- #define NOTE_GS3 208
- #define NOTE_A3 220
- #define NOTE_AS3 233
- #define NOTE_B3 247
- #define NOTE_C4 262
- #define NOTE_CS4 277
- #define NOTE_D4 294
- #define NOTE_DS4 311
- #define NOTE_E4 330
- #define NOTE_F4 349
- #define NOTE_FS4 370
- #define NOTE_G4 392
- #define NOTE_GS4 415
- #define NOTE_A4 440
- #define NOTE_AS4 466
- #define NOTE_B4 494
- #define NOTE_C5 523
- #define NOTE_CS5 554
- #define NOTE_D5 587
- #define NOTE_DS5 622
- #define NOTE_E5 659
- #define NOTE_F5 698
- #define NOTE_FS5 740
- #define NOTE_G5 784
- #define NOTE_GS5 831
- #define NOTE_A5 880
- #define NOTE_AS5 932
- #define NOTE_B5 988
- #define NOTE_C6 1047
- #define NOTE_CS6 1109
- #define NOTE_D6 1175
- #define NOTE_DS6 1245
- #define NOTE_E6 1319
- #define NOTE_F6 1397
- #define NOTE_FS6 1480
- #define NOTE_G6 1568
- #define NOTE_GS6 1661
- #define NOTE_A6 1760
- #define NOTE_AS6 1865
- #define NOTE_B6 1976
- #define NOTE_C7 2093
- #define NOTE_CS7 2217
- #define NOTE_D7 2349
- #define NOTE_DS7 2489
- #define NOTE_E7 2637
- #define NOTE_F7 2794
- #define NOTE_FS7 2960
- #define NOTE_G7 3136
- #define NOTE_GS7 3322
- #define NOTE_A7 3520
- #define NOTE_AS7 3729
- #define NOTE_B7 3951
- #define NOTE_C8 4186
- #define NOTE_CS8 4435
- #define NOTE_D8 4699
- #define NOTE_DS8 4978
- const int(bouton)=2; // broche 2 bouton
- const int(orange)=7; // broche 7 orange
- const int(vert)=6; // broche 6 vert
- const int(rouge)=5; // broche 5 rouge
- const int(blanc)=4; // broche 4 blanc
- const int (buz) = 10; // broche 10 buzzer
- unsigned long previousMillisorange = 0; // Précédente valeur de millis()
- unsigned long previousMillisvert = 0; // Précédente valeur de millis()
- unsigned long previousMillisbuz = 0; // Précédente valeur de millis()
- const unsigned long interval = 500; // interval de clignotement
- const unsigned long intervalbuz = 100; // interval de clignotement
- int(A); // 0 ou 1
- int(B); // memoire
- int(C)=0; // compteur de pas (important)
- int(L); // Lambda et potentiomètre A2
- int(V)=360; // vitesse
- float(F)=0.733775690617; // après la virgule
- boolean(running)=false; // déclaration d'une variable de type binaire appelée running et initialisée à false
- boolean(bascule)=false; // bascule RS
- int(orangeLED)=LOW; //
- int(vertLED)=LOW; //
- void setup(){
- Serial.begin(9600); // ça pulse à 9600 Hertz
- pinMode(3, OUTPUT); // Déclaration de la broche n°3 en sortie Digitale PWM
- pinMode(11, OUTPUT); // Déclaration de la broche n°11 en sortie Digitale PWM
- pinMode(12, OUTPUT); // Déclaration de la broche n°12 en sortie Digitale
- pinMode(13, OUTPUT); // Déclaration de la broche n°13 en sortie Digitale
- pinMode(buz,OUTPUT); // Buzzer en sortie 10 s'appel buz
- digitalWrite(buz,LOW);
- pinMode(orange, OUTPUT); // LED orange
- digitalWrite(orange,7);
- pinMode(vert, OUTPUT); // LED vert
- digitalWrite(vert,6);
- pinMode(rouge, OUTPUT); // LED rouge
- pinMode(blanc, OUTPUT); // LED blanc
- pinMode(bouton, INPUT); // bouton 3
- digitalWrite(bouton,HIGH); // bouton sur OFF
- attachInterrupt(digitalPinToInterrupt(2),stop,FALLING); //
- }
- void loop(){
- // programme principale
- if(C<10000&&running==true&&bascule==false){
- digitalWrite(vert,HIGH); //allumer LED temoin vert fix
- digitalWrite(orange,LOW);
- digitalWrite(rouge,LOW); //eteindre une LED rouge
- // Commande moteur pas à pas Bipolaire 4 fils en Mode Wave | Sens Normal
- // Pas n°1 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas
- digitalWrite(12, HIGH); // bobine du moteur A marche
- digitalWrite(13, LOW); // bobine du moteur B arrêt
- analogWrite(3, 0); //Tension du moteur A 0
- analogWrite(11, 255); //Tension du moteur B 255
- L=analogRead(A2); // mesure de la tension du potentiomètre
- L=map(L, 0, 1023, -9, 9); // convertion des valeur mesurer par p (L,0,1023,-p,p)
- if(L==0){
- digitalWrite(blanc,HIGH);
- }
- else if(L!=0){
- digitalWrite(blanc,LOW);
- }
- C++; // + un pas
- A=(F*C)-B; // 0 ou 1
- delay(V+A+L); // le delais est de 180 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
- B=(F*C); // on ajoute A à B
- // Pas n°2 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
- digitalWrite(12, LOW); // bobine du moteur A arrêt
- digitalWrite(13, HIGH); // bobine du moteur B marche
- analogWrite(3, 255); //Tension du moteur A 255
- analogWrite(11, 0); //Tension du moteur B 0
- L=analogRead(A2); // mesure de la tension du potentiomètre
- L=map(L, 0, 1023, -9, 9); // convertion des valeur mesurer par p (L,0,1023,-p,p)
- if(L==0){
- digitalWrite(blanc,HIGH);
- }
- else if(L!=0){
- digitalWrite(blanc,LOW);
- }
- C++; // + un pas
- A=(F*C)-B; // 0 ou 1
- delay(V+A+L); // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
- B=(F*C); // on ajoute A à B
- // Pas n°3 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
- digitalWrite(12, LOW); // bobine du moteur A arrêt
- digitalWrite(13, HIGH); // bobine du moteur B marche
- analogWrite(3, 0); //Tension du moteur A 0
- analogWrite(11, 255); //Tension du moteur B 255
- L=analogRead(A2); // mesure de la tension du potentiomètre
- L=map(L, 0, 1023, -9, 9); // convertion des valeur mesurer par p (L,0,1023,-p,p)
- if(L==0){
- digitalWrite(blanc,HIGH);
- }
- else if(L!=0){
- digitalWrite(blanc,LOW);
- }
- C++; // + un pas
- A=(F*C)-B; // 0 ou 1
- delay(V+A+L); // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
- B=(F*C); // on ajoute A à B
- // Pas n°4 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
- digitalWrite(12, HIGH); // bobine du moteur A marche
- digitalWrite(13, LOW); // bobine du moteur B arrêt
- analogWrite(3, 255); //Tension du moteur A 255
- analogWrite(11, 0); //Tension du moteur B 0
- L=analogRead(A2); // mesure de la tension du potentiomètre
- L=map(L, 0, 1023, -9, 9); // convertion des valeur mesurer par p (L,0,1023,-p,p)
- if(L==0){
- digitalWrite(blanc,HIGH);
- }
- else if(L!=0){
- digitalWrite(blanc,LOW);
- }
- C++; // + un pas
- A=(F*C)-B; // 0 ou 1
- delay(V+A+L); // le delais est de 361 Ms + 1ms ou 0Ms + la valeur p encapsuler en L
- B=(F*C); // on ajoute A à B
- // condition de fin de boucle du programme principale
- if(C>=10000){
- digitalWrite(vert,LOW);
- bascule=true;
- } // fin de la condition
- } // fin programme principale
- // stand by
- else if(running==false&& C==0){ // stand by
- digitalWrite(orange,HIGH); // allumer LED temoin orange fixe
- digitalWrite(vert,LOW);
- digitalWrite(blanc,LOW); //eteint LED blanc
- digitalWrite(rouge,LOW); // eteint LED rouge
- digitalWrite(12, LOW); //stop
- digitalWrite(13, LOW); //stop
- analogWrite(11, 0); //stop
- analogWrite(11, 0); //stop
- } //fin de stand by
- // bascule
- else if(bascule==true&&C>0){
- // Commande moteur pas à pas Bipolaire 4 fils en Mode Wave Sens inverse
- // Pas n°1 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
- digitalWrite(12, HIGH);
- digitalWrite(13, LOW);
- analogWrite(3, 255);
- analogWrite(11, 0);
- delay(10);
- C--;
- // Pas n°2 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
- digitalWrite(12, LOW);
- digitalWrite(13, HIGH);
- analogWrite(3, 0);
- analogWrite(11, 255);
- delay(10);
- C--;
- // Pas n°3 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
- digitalWrite(12, LOW);
- digitalWrite(13, HIGH);
- analogWrite(3, 255);
- analogWrite(11, 0);
- delay(10);
- C--;
- // Pas n°4 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas
- digitalWrite(12, HIGH);
- digitalWrite(13, LOW);
- analogWrite(3, 0);
- analogWrite(11, 255);
- delay(10);
- C--;
- // fin du programme d'execution de la boucle basculle
- // condition de la fin de la boucle bascule
- if(C==0){
- bascule=false;
- A=0;
- B=0;
- digitalWrite(orange,LOW);
- digitalWrite(vert,LOW);
- } // fin de la boucle de condition de la boucle bascule
- // bascule et vert clignotant
- else if(running==true){
- digitalWrite(orange, LOW);
- unsigned long currentMillis = millis(); // on permet le clignotement en tache de fond
- // Si interval_3 ou plus millisecondes se sont écoulés
- if(currentMillis - previousMillisvert >= interval){
- // Garde en mémoire la valeur actuelle de millis()
- previousMillisvert = currentMillis;
- digitalWrite(vert, vertLED);
- if(vertLED == LOW){
- // Inverse l'état de la LED 3
- vertLED=HIGH;
- }
- else if(vertLED == HIGH){
- // Inverse l'état de la LED 3
- vertLED=LOW;
- }
- }
- }// fin de la boucle clignotant
- // bascule et orange clignotant
- if(running==false){
- digitalWrite(vert, LOW);
- unsigned long currentMillis = millis(); // on permet le clignotement en tache de fond
- // Si interval_3 ou plus millisecondes se sont écoulés
- if(currentMillis - previousMillisvert >= interval){
- // Garde en mémoire la valeur actuelle de millis()
- previousMillisvert = currentMillis;
- digitalWrite(orange, orangeLED);
- if(orangeLED == LOW){
- // Inverse l'état de la LED 3
- orangeLED = HIGH;
- }
- else if(orangeLED == HIGH){
- // Inverse l'état de la LED 3
- orangeLED = LOW;
- }
- }
- } // fin de la boucle clignotant
- } // fin de bascule
- //ça vas pas on s'arrête rouge
- else{
- digitalWrite(rouge,HIGH); //alumer une LED rouge
- digitalWrite(blanc,LOW);
- digitalWrite(vert,LOW);
- digitalWrite(orange,LOW);
- digitalWrite(12, LOW); //stop
- digitalWrite(13, LOW); //stop
- analogWrite(11, 0); //stop
- analogWrite(11, 0); //stop
- }
- } //Fin de void loop
- void stop(){
- digitalWrite(vert,LOW);
- digitalWrite(orange, LOW);
- digitalWrite(rouge,HIGH); //flash rouge à l'appuit du bouton et inverse running
- delay(500);
- digitalWrite(rouge,LOW);
- running=!running;
- if(C>0){
- bascule=true;
- }
- }//fin de la boucle stop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement