Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //******************************************************************************************************************************
- //==============================================================================================================================
- // Claude DUFOURMONT
- //--------------------------------------------------------- claude.dufourmont@laposte.net --------------------------------------
- // My YouTube : https://www.youtube.com/channel/UCvr9eb05lJow6N7m3SKqvNw
- // DUFOURMONT Le 09/12/2020
- // Le but de ce code Nano :
- // -Aquerir le top demarrage
- // -Aquerir les états de décollage
- // -Transmettre les informations aux modules d'animation
- // -Interrompre le moteur UP par une interruption de FDCMONTEE et remettre à zero l'armement
- // NANO_Detection_Levage_et_moteur_OK.ino
- // -Activation du Buzzer sur
- // -Démarrage de la Nano
- // - A chaque fois qu'un anneau décollle
- // - La tempo d'arrêt du moteur à chaque décollage est augmentée légérementpour plus de réalisme
- // - Le bouton astable mettant les 2 leds de poids faible à "0" est opértionnel
- // CE CODE FONCTIONNE AVEC LE SCHEMA : NewSchema01 (easy EDA)
- //===============================================================================================================================
- //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- // FONCTIONNE NE PAS MODIFIER FDCMONTEE, ONOFF LEDS et BEEP intégrés >
- //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- int volatile FDCMONTEE = 2;
- int volatile FDCDESCENTE = 3;
- #define Anneau01Decole 4 // Anneau supérieur Décollé : LED bleue
- #define Anneau02Decole 5 // Deuxième anneau en partant du haut Décollé : LED blanche
- #define Anneau03Decole 6 // Troisième anneau en partant du haut Décollé : LED verte
- #define Anneau04Decole 7 // Quatrième anneau en partant du haut Décollé : LED jaune
- #define BPUPActionne 8 // LED rouge
- #define MoteurUP 11 // LED Bleue (triled
- #define MoteurDOWN 12 // LED Verte (triled)
- #define BrocheONOFFLED 13
- #define BrocheBuzzer 19
- #define N_LEDS1 8
- #define BrocheE3 9 // avant dernier bit : LED jaune
- #define BrocheE4 10 // dernier bit : LED bleue
- float ValDetecteur01;
- float ValDetecteur02;
- float ValDetecteur03;
- float ValDetecteur04;
- float ValBPUP;
- float ValBPDOWN;
- float ValBPONOFFLED;
- float tempo1 = 2000; // tempo avant arrêt moteur pour show
- float tempo2 = 5000; // tempo durée arrêt moteur pour show
- float tempo3 = 2000; //
- float tempo4 = 2000; //
- float tempo5 = 10000; //
- bool etatBPUP;
- bool LastetatBPUP;
- bool etatBPDOWN;
- bool LastetatBPDOWN;
- bool etatBPONOFFLED;
- bool LastetatBPONOFFLED;
- bool Armement01;
- bool LastArmement01;
- bool Armement02;
- bool LastArmement02;
- bool Armement03;
- bool LastArmement03;
- bool Armement04;
- bool LastArmement04;
- bool E3;
- bool E4;
- bool E5;
- void setup()
- {
- pinMode (FDCMONTEE, INPUT_PULLUP);
- pinMode (Anneau01Decole, OUTPUT);
- pinMode (Anneau02Decole, OUTPUT);
- pinMode (Anneau03Decole, OUTPUT);
- pinMode (Anneau04Decole, OUTPUT);
- pinMode (BPUPActionne, OUTPUT);
- pinMode (BrocheBuzzer, OUTPUT);
- pinMode (MoteurUP, OUTPUT);
- pinMode (MoteurDOWN, OUTPUT);
- pinMode (BrocheE3, OUTPUT);
- pinMode (BrocheE4, OUTPUT);
- pinMode (BrocheONOFFLED, OUTPUT);
- attachInterrupt(digitalPinToInterrupt(FDCMONTEE), Stopallumage, FALLING);
- etatBPUP = LOW;
- LastetatBPUP = LOW;
- Armement01 = LOW;
- LastArmement01 = LOW;
- Armement02 = LOW;
- LastArmement02 = LOW;
- Armement03 = LOW;
- LastArmement03 = LOW;
- Armement04 = LOW;
- LastArmement04 = LOW;
- etatBPONOFFLED = LOW;
- LastetatBPONOFFLED = LOW;
- E3 = LOW;
- E4 = LOW;
- E5 = LOW;
- digitalWrite (BrocheE3, LOW);
- digitalWrite (BrocheE4, LOW);
- digitalWrite (BrocheONOFFLED, LOW);
- Buzzer (40, 3, 1);
- delay(1000);
- }
- void loop ()
- {
- //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Determination des etats DEBUT DEBUT DEBUT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPUP DEBUTt++++++++++++++++++++++++++++++++++++++++++++++
- delay(5);
- ValBPUP = analogRead (A0);
- if ( ValBPUP < 900 && digitalRead (FDCMONTEE )== HIGH)
- {
- etatBPUP = HIGH;
- LastetatBPUP = etatBPUP;
- }
- else
- {
- etatBPUP = LOW;
- }
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPUP FIN+++++++++++++++++++++++++++++++++++++++++++++++++++
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPDOWN DEBUTt++++++++++++++++++++++++++++++++++++++++++++++
- delay(5);
- ValBPDOWN = analogRead (A7);
- if ( ValBPDOWN < 900)
- {
- etatBPDOWN = HIGH;
- LastetatBPDOWN = HIGH;
- }
- else
- {
- etatBPDOWN = LOW;
- }
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPDOWN FIN++++++++++++++++++++++++++++++++++++++++++++++++++
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPONOFFLED DEBUTt+++++++++++++++++++++++++++++++++++++++++++
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPONOFFLED FIN+++++++++++++++++++++++++++++++++++++++++++++++
- //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++E4 FIN++++++++++++++++++++++++++++++++++++++++++++++++++++
- //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Determination des etats FIN FIN FIN <<<<<<<<<<<<<<<<<<<<
- //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Positionnement des sorties DEBUT DEBUT DEBUT >>>>>>>>>>>>>>>
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement BPUPActionne DEBUT DEBUT DEBUT+++++++++++++++++++
- delay(5);
- if (LastetatBPUP ==HIGH)
- {
- digitalWrite (BPUPActionne, HIGH);
- FonctionMoteurUP ();
- //Buzzer (50, 25, 2);
- }
- else
- {
- digitalWrite (BPUPActionne, LOW);
- FonctionMoteurSTOP ();
- }
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau01Decole DEBUT DEBUT DEBUT++++++++++++++++++++
- delay(5);
- ValDetecteur01 = analogRead (A1);
- if ( ValDetecteur01 < 600 && LastetatBPUP==HIGH)
- {
- digitalWrite (Anneau01Decole, HIGH);
- //delay(1500);
- Armement01 = HIGH;
- }
- if (Armement01 == HIGH && LastArmement01 == LOW)
- {Buzzer (50, 25, 1);
- }
- if (Armement01 == HIGH && LastArmement01 == LOW)
- {
- delay(tempo1);
- digitalWrite (Anneau01Decole, HIGH);
- FonctionMoteurSTOP ();
- digitalWrite (BrocheE3,LOW);
- digitalWrite (BrocheE4,HIGH);
- E3 = LOW;
- E4 = HIGH;
- delay (tempo2);
- LastArmement01 = HIGH;
- FonctionMoteurUP ();
- digitalWrite (BrocheE3,LOW);
- digitalWrite (BrocheE4,LOW);
- E3 = LOW;
- E4 = LOW;
- delay (tempo3);
- digitalWrite (BrocheE3,HIGH);
- E3 = HIGH;
- }
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau01Decole FIN FIN FIN+++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau02Decole DEBUT DEBUT DEBUT+++++++++++++++++++++
- delay(5);
- ValDetecteur02 = analogRead (A2);
- if ( ValDetecteur02 < 600 && LastetatBPUP==HIGH)
- {
- digitalWrite (Anneau02Decole, HIGH);
- //delay(1500);
- Armement02 = HIGH;
- }
- if (Armement02 == HIGH && LastArmement02 == LOW)
- {Buzzer (50, 25, 2);
- }
- if (Armement02 == HIGH && LastArmement02 == LOW)
- {
- delay(tempo1);
- digitalWrite (Anneau02Decole, HIGH);
- FonctionMoteurSTOP ();
- digitalWrite (BrocheE3,LOW);
- digitalWrite (BrocheE4,HIGH);
- E3 = LOW;
- E4 = HIGH;
- delay (tempo2);
- LastArmement02 = HIGH;
- FonctionMoteurUP ();
- digitalWrite (BrocheE3,LOW);
- digitalWrite (BrocheE4,LOW);
- E3 = LOW;
- E4 = LOW;
- delay (tempo3);
- digitalWrite (BrocheE3,HIGH);
- E3 = HIGH;
- }
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau02Decole FIN FIN FIN++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau03Decole DEBUT DEBUT DEBUT++++++++++++++++++++++
- delay(5);
- ValDetecteur03 = analogRead (A3);
- if ( ValDetecteur03 < 600 && LastetatBPUP==HIGH)
- {
- digitalWrite (Anneau03Decole, HIGH);
- //delay(1500);
- Armement03 = HIGH;
- }
- if (Armement03 == HIGH && LastArmement03 == LOW)
- {Buzzer (50, 25, 3);
- }
- if (Armement03 == HIGH && LastArmement03 == LOW)
- {
- delay(tempo1);
- digitalWrite (Anneau03Decole, HIGH);
- FonctionMoteurSTOP ();
- digitalWrite (BrocheE3,LOW);
- digitalWrite (BrocheE4,HIGH);
- E3 = LOW;
- E4 = HIGH;
- delay (tempo2);
- LastArmement03 = HIGH;
- FonctionMoteurUP ();
- digitalWrite (BrocheE3,LOW);
- digitalWrite (BrocheE4,LOW);
- E3 = LOW;
- E4 = LOW;
- delay (tempo3);
- digitalWrite (BrocheE3,HIGH);
- E3 = HIGH;
- }
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau03Decole FIN FIN FIN+++++++++++++++++++++++++++++
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau04Decole DEBUT DEBUT DEBUT+++++++++++++++++++++++
- delay(5);
- ValDetecteur04 = analogRead (A4);
- if ( ValDetecteur04 < 600 && LastetatBPUP==HIGH)
- {
- digitalWrite (Anneau04Decole, HIGH);
- //delay(1500);
- Armement04 = HIGH;
- }
- if (Armement04 == HIGH && LastArmement04 == LOW)
- {
- Buzzer (50, 25, 4);
- }
- if (Armement04 == HIGH && LastArmement04 == LOW)
- {
- delay(tempo1);
- digitalWrite (Anneau04Decole, HIGH);
- FonctionMoteurSTOP ();
- digitalWrite (BrocheE3,LOW);
- digitalWrite (BrocheE4,HIGH);
- E3 = LOW;
- E4 = HIGH;
- delay (tempo2);
- LastArmement04 = HIGH;
- FonctionMoteurUP ();
- digitalWrite (BrocheE3,LOW);
- digitalWrite (BrocheE4,LOW);
- E3 = LOW;
- E4 = LOW;
- delay (tempo4);
- digitalWrite (BrocheE3,HIGH);
- E3 = HIGH;
- }
- // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau04Decole FIN FIN FIN++++++++++++++++++++++++++++++
- ONOFF();
- while (digitalRead (FDCMONTEE) == LOW && E5 == HIGH)
- {
- digitalWrite (BrocheE3, LOW);
- digitalWrite (BrocheE4, HIGH);
- delay (tempo5);
- ONOFF();
- digitalWrite (BrocheE3, HIGH);
- digitalWrite (BrocheE4, LOW);
- delay (tempo5);
- ONOFF();
- digitalWrite (BrocheE3, LOW);
- digitalWrite (BrocheE4, HIGH);
- delay (tempo5);
- ONOFF();
- digitalWrite (BrocheE3, HIGH);
- digitalWrite (BrocheE4, HIGH);
- delay (tempo5);
- ONOFF();
- digitalWrite (BrocheE3, HIGH);
- digitalWrite (BrocheE4, LOW);
- delay (tempo5);
- ONOFF();
- digitalWrite (BrocheE3, LOW);
- digitalWrite (BrocheE4, HIGH);
- delay (tempo5);
- digitalWrite (BrocheE4, LOW);
- ONOFF();
- }
- ONOFF();
- while (digitalRead (FDCMONTEE) == LOW && E5 == LOW)
- {ONOFF();
- digitalWrite (BrocheE3, LOW);
- digitalWrite (BrocheE4, LOW);
- }
- }
- //*********************************************************************************************************************************
- //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++FONCTIONS MOTEUR DEBUT+++++++++++++++++++++++++++++++++++++++++++++++++
- void FonctionMoteurUP ()
- {
- delay (10);
- digitalWrite (MoteurDOWN, LOW);
- digitalWrite (MoteurUP, HIGH);
- delay (5);
- }
- void FonctionMoteurDOWN ()
- {
- delay (10);
- digitalWrite (MoteurUP, LOW);
- digitalWrite (MoteurDOWN, HIGH);
- delay (5);
- }
- void FonctionMoteurSTOP ()
- {
- delay (10);
- digitalWrite (MoteurUP, LOW);
- digitalWrite (MoteurDOWN, LOW);
- delay (5);
- }
- //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++FONCTIONS MOTEUR FIN++++++++++++++++++++++++++++++++++++++++++++++++++
- //*********************************************************************************************************************************
- void Stopallumage ()
- {
- etatBPUP = LOW;
- FonctionMoteurSTOP ();
- LastetatBPUP = LOW;
- digitalWrite (BPUPActionne,LOW);
- digitalWrite (MoteurDOWN, LOW);
- }
- //================DEBUT FONCTION BUZZER================
- void Buzzer (int TempsH, int TempsL, int nb) // TempsH => délai buzzer ON, TempsL => délai buzzer OFF, nb => nombre de bips
- {
- for (int x = 1; x <= nb; x++) // Boucle le nombre de fois voulu passée par l'argument "int nb"
- {
- digitalWrite(BrocheBuzzer, HIGH); // Active le buzzer
- delay (TempsH); // Temporisation à l'état haut du buzzer pendant la durée passée par l'argument "int TempsH"
- digitalWrite(BrocheBuzzer, LOW); // Désactive le buzzer
- delay (TempsL); // Temporisation à l'état bas du buzzer pendant la durée passée par l'argument "int TempsL"
- }
- }
- //================FIN FONCTION BUZZER================
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++Foction EtatBPONOFFLED DEBUT+++++++++++++++++++++++++++++++++++++++++++
- void ONOFF()
- {
- delay(10);
- ValBPONOFFLED = analogRead (A6);
- if ( ValBPONOFFLED < 511 )
- {
- etatBPONOFFLED = HIGH;
- }
- else
- {
- etatBPONOFFLED = LOW;
- }
- if (etatBPONOFFLED != LastetatBPONOFFLED)
- {
- LastetatBPONOFFLED = etatBPONOFFLED;
- if (etatBPONOFFLED == HIGH)
- {
- E5 = !E5;
- }
- }
- if (E5 == HIGH)
- {
- digitalWrite(BrocheONOFFLED,HIGH);
- }
- else
- {
- digitalWrite(BrocheONOFFLED,LOW);
- }
- }
- //+++++++++++++++++++++++++++++++++++++++++++++++++++++++Foction EtatBPONOFFLED Fin+++++++++++++++++++++++++++++++++++++++++++
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement