Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define NOTE_DS6 1245
- #define NOTE_CS6 1109
- #define basculeLED(x) digitalWrite(x, !digitalRead(x))
- 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
- boolean (initialisation) = false; //
- 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
- if(!initialisation){
- tone(buz,NOTE_CS6,80);
- delay(100);
- tone(buz,NOTE_DS6,80);
- delay(100);
- tone(buz,NOTE_DS6,160);
- initialisation=true;
- }
- } //fin de stand by
- // bascule
- else if(bascule==true&&C>0){
- digitalWrite(rouge,LOW);
- // 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;
- basculeLED(vert);
- /*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;
- basculeLED(orange);
- /*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
- if(initialisation){
- tone(buz,NOTE_CS6,80);
- delay(100);
- tone(buz,NOTE_DS6,80);
- initialisation=false;
- }
- running=!running;
- if(C>0){
- bascule=true;
- }
- }//fin de la boucle stop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement