Advertisement
claudiusmarius

Platine principale ave delay

Dec 12th, 2020
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 17.67 KB | None | 0 0
  1. //******************************************************************************************************************************
  2.   //******************************************************************************************************************************
  3.   //******************************************************************************************************************************
  4.   //******************************************************************************************************************************
  5.   //******************************************************************************************************************************
  6.   //******************************************************************************************************************************
  7.   //******************************************************************************************************************************
  8.   //******************************************************************************************************************************
  9.   //******************************************************************************************************************************
  10.   //******************************************************************************************************************************
  11.   //******************************************************************************************************************************
  12.   //******************************************************************************************************************************
  13.   //******************************************************************************************************************************
  14.   //******************************************************************************************************************************
  15.   //******************************************************************************************************************************
  16.   //******************************************************************************************************************************
  17.   //******************************************************************************************************************************
  18.   //******************************************************************************************************************************
  19.   //******************************************************************************************************************************
  20.   //******************************************************************************************************************************
  21.   //******************************************************************************************************************************
  22.   //******************************************************************************************************************************
  23.   //******************************************************************************************************************************
  24.   //******************************************************************************************************************************
  25.   //==============================================================================================================================
  26.   //                                                                Claude DUFOURMONT
  27.   //--------------------------------------------------------- claude.dufourmont@laposte.net --------------------------------------
  28.   //                  My YouTube : https://www.youtube.com/channel/UCvr9eb05lJow6N7m3SKqvNw
  29.   //    DUFOURMONT Le 09/12/2020
  30.   //    Le but de ce code Nano :
  31.   //    -Aquerir le top demarrage
  32.   //    -Aquerir les états de décollage
  33.   //    -Transmettre les informations aux modules d'animation
  34.   //    -Interrompre le moteur UP par une interruption de FDCMONTEE et remettre à zero l'armement
  35.   //    NANO_Detection_Levage_et_moteur_OK.ino
  36.   //    -Activation du Buzzer sur
  37.   //    -Démarrage de la Nano
  38.   //    - A chaque fois qu'un anneau décollle
  39.   //    - La tempo d'arrêt du moteur à chaque décollage est augmentée légérementpour plus de réalisme
  40.   //    - Le bouton astable mettant les 2 leds de poids faible à "0" est opértionnel
  41.   //    CE CODE FONCTIONNE AVEC LE SCHEMA : NewSchema01 (easy EDA)
  42.   //===============================================================================================================================
  43.  
  44.  
  45.                               //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  46.                               //    FONCTIONNE NE PAS MODIFIER    FDCMONTEE, ONOFF LEDS  et BEEP intégrés     >
  47.                               //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  48.  
  49.  
  50.  
  51.  
  52.   int  volatile FDCMONTEE         =   2;        
  53.   int  volatile FDCDESCENTE       =   3;
  54.   #define Anneau01Decole        4                                       //  Anneau supérieur Décollé                    : LED bleue
  55.   #define Anneau02Decole        5                                       //  Deuxième anneau en partant du haut Décollé  : LED blanche
  56.   #define Anneau03Decole        6                                       //  Troisième anneau en partant du haut Décollé : LED verte
  57.   #define Anneau04Decole        7                                       //  Quatrième anneau en partant du haut Décollé : LED jaune
  58.  
  59.   #define BPUPActionne          8                                       //  LED rouge
  60.  
  61.  
  62.   #define MoteurUP              11                                      // LED Bleue (triled
  63.   #define MoteurDOWN            12                                      // LED Verte (triled)
  64.   #define BrocheONOFFLED        13
  65.   #define BrocheBuzzer          19        
  66.  
  67.   #define N_LEDS1               8
  68.  
  69.   #define BrocheE3   9                                                  // avant dernier bit :  LED jaune
  70.   #define BrocheE4  10                                                  //  dernier bit :        LED bleue
  71.  
  72.   float ValDetecteur01;
  73.   float ValDetecteur02;
  74.   float ValDetecteur03;
  75.   float ValDetecteur04;
  76.  
  77.   float ValBPUP;
  78.   float ValBPDOWN;
  79.   float ValBPONOFFLED;
  80.   float tempo1 = 2000;                                                  // tempo avant arrêt moteur pour show                                    
  81.   float tempo2 = 5000;                                                 // tempo durée arrêt moteur pour show
  82.   float tempo3 = 2000;                                                 //
  83.   float tempo4 = 2000;                                                  //
  84.   float tempo5 = 10000;   //                                        
  85.  
  86.   bool etatBPUP;
  87.   bool LastetatBPUP;
  88.  
  89.   bool etatBPDOWN;
  90.   bool LastetatBPDOWN;
  91.  
  92.   bool etatBPONOFFLED;
  93.   bool LastetatBPONOFFLED;
  94.  
  95.   bool Armement01;
  96.   bool LastArmement01;
  97.   bool Armement02;
  98.   bool LastArmement02;
  99.  
  100.   bool Armement03;
  101.   bool LastArmement03;
  102.   bool Armement04;
  103.   bool LastArmement04;
  104.  
  105.   bool E3;
  106.   bool E4;
  107.   bool E5;
  108.  
  109.   void setup()
  110.   {
  111.   pinMode (FDCMONTEE,      INPUT_PULLUP);                                                                        
  112.   pinMode (Anneau01Decole, OUTPUT);
  113.   pinMode (Anneau02Decole, OUTPUT);
  114.   pinMode (Anneau03Decole, OUTPUT);
  115.   pinMode (Anneau04Decole, OUTPUT);
  116.   pinMode (BPUPActionne,   OUTPUT);
  117.   pinMode (BrocheBuzzer,   OUTPUT);
  118.   pinMode (MoteurUP,       OUTPUT);
  119.   pinMode (MoteurDOWN,     OUTPUT);
  120.   pinMode (BrocheE3,       OUTPUT);
  121.   pinMode (BrocheE4,       OUTPUT);
  122.   pinMode (BrocheONOFFLED, OUTPUT);
  123.  
  124.   attachInterrupt(digitalPinToInterrupt(FDCMONTEE), Stopallumage, FALLING);
  125.  
  126.   etatBPUP = LOW;
  127.   LastetatBPUP = LOW;
  128.  
  129.   Armement01 = LOW;
  130.   LastArmement01 = LOW;
  131.   Armement02 = LOW;
  132.   LastArmement02 = LOW;
  133.  
  134.   Armement03 = LOW;
  135.   LastArmement03 = LOW;
  136.   Armement04 = LOW;
  137.   LastArmement04 = LOW;
  138.  
  139.   etatBPONOFFLED = LOW;
  140.   LastetatBPONOFFLED = LOW;
  141.  
  142.   E3 = LOW;
  143.   E4 = LOW;
  144.   E5 = LOW;
  145.  
  146.   digitalWrite (BrocheE3, LOW);
  147.   digitalWrite (BrocheE4, LOW);
  148.   digitalWrite (BrocheONOFFLED, LOW);
  149.  
  150.   Buzzer (40, 3, 1);
  151.   delay(1000);
  152.   }
  153.  
  154.   void loop ()
  155.   {
  156.  
  157.   //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Determination des etats    DEBUT DEBUT DEBUT    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  158.  
  159.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPUP DEBUTt++++++++++++++++++++++++++++++++++++++++++++++
  160.   delay(5);
  161.   ValBPUP = analogRead (A0);
  162.   if   ( ValBPUP < 900 && digitalRead (FDCMONTEE )== HIGH)
  163.   {
  164.   etatBPUP = HIGH;
  165.   LastetatBPUP = etatBPUP;
  166.   }
  167.   else
  168.   {
  169.   etatBPUP = LOW;
  170.   }
  171.  
  172.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPUP FIN+++++++++++++++++++++++++++++++++++++++++++++++++++
  173.  
  174.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPDOWN DEBUTt++++++++++++++++++++++++++++++++++++++++++++++
  175.   delay(5);
  176.   ValBPDOWN = analogRead (A7);
  177.   if   ( ValBPDOWN < 900)
  178.   {
  179.   etatBPDOWN = HIGH;
  180.   LastetatBPDOWN = HIGH;
  181.   }
  182.   else
  183.   {
  184.   etatBPDOWN = LOW;
  185.   }
  186.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPDOWN FIN++++++++++++++++++++++++++++++++++++++++++++++++++
  187.  
  188.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPONOFFLED DEBUTt+++++++++++++++++++++++++++++++++++++++++++
  189.  
  190.  
  191.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++EtatBPONOFFLED FIN+++++++++++++++++++++++++++++++++++++++++++++++
  192.  
  193.  
  194.   //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++E4 FIN++++++++++++++++++++++++++++++++++++++++++++++++++++
  195.  
  196.   //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Determination des etats    FIN FIN FIN    <<<<<<<<<<<<<<<<<<<<
  197.  
  198.  
  199.   //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Positionnement des sorties    DEBUT DEBUT DEBUT    >>>>>>>>>>>>>>>
  200.  
  201.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement BPUPActionne DEBUT DEBUT DEBUT+++++++++++++++++++
  202.  
  203.   delay(5);
  204.   if (LastetatBPUP ==HIGH)
  205.   {
  206.   digitalWrite (BPUPActionne, HIGH);
  207.   FonctionMoteurUP ();
  208.   //Buzzer (50, 25, 2);
  209.   }
  210.   else
  211.   {
  212.   digitalWrite (BPUPActionne, LOW);
  213.   FonctionMoteurSTOP ();
  214.   }
  215.  
  216.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau01Decole DEBUT DEBUT DEBUT++++++++++++++++++++
  217.  
  218.   delay(5);
  219.   ValDetecteur01 = analogRead (A1);
  220.   if   ( ValDetecteur01 < 600 && LastetatBPUP==HIGH)
  221.   {
  222.   digitalWrite (Anneau01Decole, HIGH);
  223.   //delay(1500);
  224.   Armement01 = HIGH;
  225.  
  226.   }
  227.   if (Armement01 == HIGH && LastArmement01 == LOW)
  228.   {Buzzer (50, 25, 1);
  229.   }
  230.  
  231.   if (Armement01 == HIGH && LastArmement01 == LOW)
  232.   {
  233.   delay(tempo1);
  234.   digitalWrite (Anneau01Decole, HIGH);
  235.   FonctionMoteurSTOP ();
  236.   digitalWrite (BrocheE3,LOW);
  237.   digitalWrite (BrocheE4,HIGH);
  238.   E3 = LOW;
  239.   E4 = HIGH;
  240.   delay (tempo2);
  241.   LastArmement01 = HIGH;
  242.   FonctionMoteurUP ();
  243.   digitalWrite (BrocheE3,LOW);
  244.   digitalWrite (BrocheE4,LOW);
  245.   E3 = LOW;
  246.   E4 = LOW;
  247.                              
  248.   delay (tempo3);
  249.   digitalWrite (BrocheE3,HIGH);
  250.   E3 = HIGH;
  251.   }
  252.  
  253.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau01Decole FIN FIN FIN+++++++++++++++++++++++++++
  254.  
  255.  
  256.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau02Decole DEBUT DEBUT DEBUT+++++++++++++++++++++
  257.  
  258.   delay(5);
  259.   ValDetecteur02 = analogRead (A2);
  260.   if   ( ValDetecteur02 < 600 && LastetatBPUP==HIGH)
  261.   {
  262.   digitalWrite (Anneau02Decole, HIGH);
  263.   //delay(1500);
  264.   Armement02 = HIGH;
  265.   }
  266.   if (Armement02 == HIGH && LastArmement02 == LOW)
  267.   {Buzzer (50, 25, 2);
  268.   }
  269.  
  270.   if (Armement02 == HIGH && LastArmement02 == LOW)
  271.   {
  272.   delay(tempo1);
  273.   digitalWrite (Anneau02Decole, HIGH);
  274.   FonctionMoteurSTOP ();
  275.   digitalWrite (BrocheE3,LOW);
  276.   digitalWrite (BrocheE4,HIGH);
  277.   E3 = LOW;
  278.   E4 = HIGH;
  279.  
  280.   delay (tempo2);
  281.   LastArmement02 = HIGH;
  282.   FonctionMoteurUP ();
  283.   digitalWrite (BrocheE3,LOW);
  284.   digitalWrite (BrocheE4,LOW);
  285.   E3 = LOW;
  286.   E4 = LOW;
  287.                              
  288.   delay (tempo3);
  289.   digitalWrite (BrocheE3,HIGH);
  290.   E3 = HIGH;
  291.   }
  292.  
  293.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau02Decole FIN FIN FIN++++++++++++++++++++++++++++
  294.  
  295.  
  296.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau03Decole DEBUT DEBUT DEBUT++++++++++++++++++++++
  297.  
  298.   delay(5);
  299.   ValDetecteur03 = analogRead (A3);
  300.   if   ( ValDetecteur03 < 600 && LastetatBPUP==HIGH)
  301.   {
  302.   digitalWrite (Anneau03Decole, HIGH);
  303.   //delay(1500);
  304.   Armement03 = HIGH;
  305.   }
  306.  
  307.   if (Armement03 == HIGH && LastArmement03 == LOW)
  308.   {Buzzer (50, 25, 3);
  309.   }
  310.  
  311.   if (Armement03 == HIGH && LastArmement03 == LOW)
  312.   {
  313.   delay(tempo1);
  314.   digitalWrite (Anneau03Decole, HIGH);
  315.   FonctionMoteurSTOP ();
  316.   digitalWrite (BrocheE3,LOW);
  317.   digitalWrite (BrocheE4,HIGH);
  318.   E3 = LOW;
  319.   E4 = HIGH;
  320.  
  321.   delay (tempo2);
  322.   LastArmement03 = HIGH;
  323.   FonctionMoteurUP ();
  324.   digitalWrite (BrocheE3,LOW);
  325.   digitalWrite (BrocheE4,LOW);
  326.   E3 = LOW;
  327.   E4 = LOW;
  328.  
  329.   delay (tempo3);
  330.   digitalWrite (BrocheE3,HIGH);
  331.   E3 = HIGH;
  332.   }
  333.  
  334.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau03Decole FIN FIN FIN+++++++++++++++++++++++++++++
  335.  
  336.  
  337.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau04Decole DEBUT DEBUT DEBUT+++++++++++++++++++++++
  338.  
  339.   delay(5);
  340.   ValDetecteur04 = analogRead (A4);
  341.   if   ( ValDetecteur04 < 600 && LastetatBPUP==HIGH)
  342.   {
  343.   digitalWrite (Anneau04Decole, HIGH);
  344.   //delay(1500);
  345.   Armement04 = HIGH;
  346.   }
  347.   if (Armement04 == HIGH && LastArmement04 == LOW)
  348.   {
  349.   Buzzer (50, 25, 4);
  350.   }
  351.  
  352.   if (Armement04 == HIGH && LastArmement04 == LOW)
  353.   {
  354.   delay(tempo1);
  355.   digitalWrite (Anneau04Decole, HIGH);
  356.   FonctionMoteurSTOP ();
  357.   digitalWrite (BrocheE3,LOW);
  358.   digitalWrite (BrocheE4,HIGH);
  359.   E3 = LOW;
  360.   E4 = HIGH;
  361.   delay (tempo2);
  362.   LastArmement04 = HIGH;
  363.   FonctionMoteurUP ();
  364.   digitalWrite (BrocheE3,LOW);
  365.   digitalWrite (BrocheE4,LOW);
  366.   E3 = LOW;
  367.   E4 = LOW;
  368.  
  369.   delay (tempo4);
  370.   digitalWrite (BrocheE3,HIGH);
  371.   E3 = HIGH;
  372.   }
  373.  
  374.   // +++++++++++++++++++++++++++++++++++++++++++++++++++++++Positionnement Anneau04Decole FIN FIN FIN++++++++++++++++++++++++++++++
  375.  
  376.   ONOFF();
  377.   while (digitalRead (FDCMONTEE) == LOW && E5 == HIGH)
  378.   {
  379.   digitalWrite (BrocheE3, LOW);
  380.   digitalWrite (BrocheE4, HIGH);
  381.   delay (tempo5);
  382.   ONOFF();
  383.   digitalWrite (BrocheE3, HIGH);
  384.   digitalWrite (BrocheE4, LOW);
  385.   delay (tempo5);
  386.   ONOFF();
  387.   digitalWrite (BrocheE3, LOW);
  388.   digitalWrite (BrocheE4, HIGH);
  389.   delay (tempo5);
  390.   ONOFF();
  391.   digitalWrite (BrocheE3, HIGH);
  392.   digitalWrite (BrocheE4, HIGH);
  393.   delay (tempo5);
  394.   ONOFF();
  395.   digitalWrite (BrocheE3, HIGH);
  396.   digitalWrite (BrocheE4, LOW);
  397.   delay (tempo5);
  398.   ONOFF();
  399.   digitalWrite (BrocheE3, LOW);
  400.   digitalWrite (BrocheE4, HIGH);
  401.   delay (tempo5);
  402.   digitalWrite (BrocheE4, LOW);
  403.   ONOFF();
  404.   }
  405.   ONOFF();
  406.   while (digitalRead (FDCMONTEE) == LOW && E5 == LOW)
  407.   {ONOFF();
  408.   digitalWrite (BrocheE3, LOW);
  409.   digitalWrite (BrocheE4, LOW);
  410.   }
  411.   }
  412.  
  413.   //*********************************************************************************************************************************
  414.   //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++FONCTIONS MOTEUR DEBUT+++++++++++++++++++++++++++++++++++++++++++++++++
  415.  
  416.   void FonctionMoteurUP ()
  417.   {
  418.   delay (10);
  419.   digitalWrite (MoteurDOWN, LOW);
  420.   digitalWrite (MoteurUP, HIGH);
  421.   delay (5);
  422.   }
  423.    
  424.   void FonctionMoteurDOWN ()
  425.   {
  426.   delay (10);
  427.   digitalWrite (MoteurUP, LOW);
  428.   digitalWrite (MoteurDOWN, HIGH);
  429.   delay (5);
  430.   }  
  431.  
  432.   void FonctionMoteurSTOP ()
  433.   {
  434.   delay (10);
  435.   digitalWrite (MoteurUP, LOW);
  436.   digitalWrite (MoteurDOWN, LOW);
  437.   delay (5);
  438.   }  
  439.  
  440.   //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++FONCTIONS MOTEUR FIN++++++++++++++++++++++++++++++++++++++++++++++++++  
  441.  
  442.   //*********************************************************************************************************************************  
  443.  
  444.   void Stopallumage ()
  445.   {
  446.   etatBPUP = LOW;
  447.  
  448.   FonctionMoteurSTOP ();
  449.   LastetatBPUP = LOW;
  450.   digitalWrite (BPUPActionne,LOW);
  451.   digitalWrite (MoteurDOWN, LOW);
  452.   }
  453.  
  454.   //================DEBUT FONCTION BUZZER================
  455.   void Buzzer (int TempsH, int TempsL, int nb)                // TempsH => délai buzzer ON, TempsL => délai buzzer OFF, nb => nombre de bips
  456.   {
  457.   for (int x = 1; x <= nb; x++)                               // Boucle le nombre de fois voulu passée par l'argument "int nb"
  458.   {
  459.   digitalWrite(BrocheBuzzer, HIGH);                           // Active le buzzer
  460.   delay (TempsH);                                             // Temporisation à  l'état haut du buzzer pendant la durée passée par l'argument "int TempsH"
  461.   digitalWrite(BrocheBuzzer, LOW);                            // Désactive le buzzer
  462.   delay (TempsL);                                             // Temporisation à  l'état bas du buzzer pendant la durée passée par l'argument "int TempsL"
  463.   }
  464.   }
  465.   //================FIN FONCTION BUZZER================
  466.  
  467.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++Foction EtatBPONOFFLED DEBUT+++++++++++++++++++++++++++++++++++++++++++
  468.  
  469.   void ONOFF()
  470.   {
  471.   delay(10);
  472.   ValBPONOFFLED = analogRead (A6);
  473.   if ( ValBPONOFFLED < 511 )
  474.   {
  475.   etatBPONOFFLED = HIGH;
  476.   }
  477.   else
  478.   {
  479.   etatBPONOFFLED = LOW;
  480.   }
  481.   if (etatBPONOFFLED != LastetatBPONOFFLED)
  482.   {
  483.   LastetatBPONOFFLED = etatBPONOFFLED;
  484.   if (etatBPONOFFLED == HIGH)
  485.   {
  486.   E5 = !E5;
  487.   }
  488.   }
  489.   if (E5 == HIGH)
  490.   {
  491.   digitalWrite(BrocheONOFFLED,HIGH);
  492.   }
  493.   else
  494.   {
  495.   digitalWrite(BrocheONOFFLED,LOW);
  496.   }
  497.   }
  498.   //+++++++++++++++++++++++++++++++++++++++++++++++++++++++Foction EtatBPONOFFLED Fin+++++++++++++++++++++++++++++++++++++++++++
  499.  
  500.  
  501.  
  502.  
  503.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement