Advertisement
claudiusmarius

Untitled

May 7th, 2022
1,037
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.21 KB | None | 0 0
  1. //**************************************************************************************************************************************************************************
  2.   //***************************************** Module Signalisation - Communication unidirectionnel via PWM - Carte Seeeduino XIAO **************************************************
  3.   // Bien filtrer l'alimentation car le déclenchement du Buzzer peut générer des perturbations lors de son enclenchement *****************************************************
  4.   // Attention : sortie (D10) NANO ==> fréquence PWM = 490Hz
  5.   // DFT Le 07/0/2022 19H10
  6.   //**************************************************************************************************************************************************************************
  7.  
  8.   #define BrocheEntreePWM 10                                                                                             // Broche (2) 10 entrée impulsion PWM
  9.   #define BrocheCLD 0
  10.   #define BrocheCLG 1
  11.   #define BrocheStop 2
  12.   #define BrocheRecul 3
  13.   #define BrocheVeilleuses 4
  14.   #define BrocheCodes 5
  15.   #define BrochePhares 6
  16.   #define BrocheBuzzer 7
  17.   #define BrocheFeuxRouges 8
  18.  
  19.   boolean cld = false;                                                                                                    // Indicateur d'état du clignotant droit
  20.   boolean clg = false;                                                                                                    // Indicateur d'état du clignotant gauche
  21.   unsigned long t1TempoClignotant = 0;                                                                                    // Début de la temporisation pour la fréquence de clignotement
  22.  
  23.   boolean feuxStop = false;                                                                                               // Indicateur d'état des feux stop
  24.   boolean feuxRecul = false;                                                                                              // Indicateur d'état des feux de recul
  25.  
  26.   boolean veilleuses = false;                                                                                             // Indicateur d'état des veilleuses
  27.   boolean codes = false;                                                                                                  // Indicateur d'état des codes
  28.   boolean phares = false;                                                                                                 // Indicateur d'état des phares
  29.  
  30.   boolean signalSonoreRecul = false;                                                                                      // Indicateur d'état du signal sonore de recul
  31.   unsigned long t1TemposignalSonoreRecul = 0;                                                                             // Début de la temporisation pour la fréquence de clignotement
  32.  
  33.   void setup()
  34.   {
  35.   pinMode(BrocheEntreePWM, INPUT_PULLUP);                                                                                 // Configuration des ports en Entrée / Sorties
  36.   pinMode (BrocheCLD, OUTPUT);
  37.   pinMode (BrocheCLG, OUTPUT);
  38.   pinMode (BrocheStop, OUTPUT);
  39.   pinMode (BrocheRecul, OUTPUT);
  40.   pinMode (BrocheVeilleuses, OUTPUT);
  41.   pinMode (BrocheCodes, OUTPUT);
  42.   pinMode (BrochePhares, OUTPUT);
  43.   pinMode (BrocheBuzzer, OUTPUT);
  44.   pinMode (BrocheFeuxRouges, OUTPUT);
  45.  
  46.   }
  47.  
  48.   void loop()
  49.   {
  50.  
  51.   //*************************************************************************************************************************************************************************
  52.   //noInterrupts();
  53.   unsigned long dureeImpulsion = pulseIn(BrocheEntreePWM, HIGH); // +++++++++++++++++++++++++++++++++++++++++++++++++++ // Lecture de la durée d'impulsion du signal PWM envoyé par le module principal
  54.   //interrupts();
  55.  
  56.   //*************************************************************************************************************************************************************************
  57.   if (dureeImpulsion >= 144 && dureeImpulsion <= 254 && (!cld || cld && clg)) // ++++++++++++++++++++++++++++++++++++++ // Prépare le déclenchement du clignotant droit
  58.   {
  59.   cld = true; clg = false;                                                                                             // Active l'indicateur d'état du clignotant droit
  60.   t1TempoClignotant = millis();                                                                                        // Démarre la temporisation pour la fréquence de clignotement
  61.   }
  62.   else if (dureeImpulsion >= 280 && dureeImpulsion <= 390 && (!clg || cld && clg)) // ---------------------------------// Prépare le déclenchement du clignotant gauche
  63.   {
  64.   cld = false; clg = true;                                                                                              // Active l'indicateur d'état du clignotant gauche
  65.   t1TempoClignotant = millis();                                                                                         // Démarre la temporisation pour la fréquence de clignotement
  66.   }
  67.  
  68.   else if (dureeImpulsion >= 415 && dureeImpulsion <= 525 && (cld || clg || cld && clg)) // ---------------------------// Prépare l'arrêt des clignotants ou des warning
  69.   {
  70.   cld = false; clg = false;                                                                                             // Désactive les indicateurs d'état des clignotants
  71.   }
  72.  
  73.   else if (dureeImpulsion >= 551 && dureeImpulsion <= 661 && (!cld && !clg || cld && !clg || !cld && clg)) // --------- // Prépare le déclenchement du warning
  74.   {
  75.   cld = true; clg = true;                                                                                               // Active les indicateurs d'état du clignotant droit et gauche
  76.   t1TempoClignotant = millis();                                                                                         // Démarre la temporisation pour la fréquence de clignotement
  77.   }
  78.  
  79.   else if (dureeImpulsion >= 686 && dureeImpulsion <= 796 && !feuxStop) // ------------------------------------------ // Prépare le déclenchement des feux stop
  80.   {
  81.   feuxStop = true;                                                                                                    // Active l'indicateur d'état des feux stop
  82.   }
  83.   else if (dureeImpulsion >= 957 && dureeImpulsion <= 1067 && feuxStop) // ------------------------------------------- // Prépare l'arrêt des feux stop
  84.   {
  85.   feuxStop = false;                                                                                                   // Désactive l'indicateur d'état des feux stop
  86.   }
  87.  
  88.   else if (dureeImpulsion >= 1228 && dureeImpulsion <= 1338 && !feuxRecul) // ----------------------------------------- // Prépare le déclenchement des feux de recul
  89.   {
  90.   feuxRecul = true;                                                                                                   // Active l'indicateur d'état des feux de recul
  91.   }
  92.   else if (dureeImpulsion >= 1460 && dureeImpulsion <= 1570 && feuxRecul) // ------------------------------------------ // Prépare l'arrêt des feux de recul
  93.   {
  94.   feuxRecul = false;                                                                                                  // Désactive l'indicateur d'état des feux de recul
  95.   }
  96.  
  97.   else if (dureeImpulsion >= 1794 && dureeImpulsion <= 1904 && !veilleuses) // ---------------------------------------- // Prépare le déclenchement des veilleuses
  98.   {
  99.   veilleuses = true;                                                                                                  // Active l'indicateur d'état des veilleuses
  100.   codes = false;
  101.   phares = false;
  102.   }
  103.  
  104.   else if (dureeImpulsion >= 1906 && dureeImpulsion <= 2016 && !codes) // --------------------------------------------- // Prépare le déclenchement des codes
  105.   {
  106.   codes = true;                                                                                                       // Active l'indicateur d'état des codes
  107.   veilleuses = true;
  108.   phares = false;
  109.   }
  110.  
  111.   else if (dureeImpulsion >= 1364 && dureeImpulsion <= 1474 && !phares)
  112.   {
  113.   phares = true;                                                                                                      // Active l'indicateur d'état des phares
  114.   codes = true;
  115.   veilleuses = true;
  116.   }
  117.  
  118.   else if (dureeImpulsion >= 822 && dureeImpulsion <= 932 && (veilleuses || codes || phares)) // -------------------- // Prépare l'arrêt de l'éclairage
  119.   {
  120.   veilleuses = false;                                                                                                 // Désactive l'indicateur d'état des veilleuses
  121.   codes = false;                                                                                                      // Désactive l'indicateur d'état des codes
  122.   phares = false;                                                                                                     // Désactive l'indicateur d'état des phares
  123.   }
  124.  
  125.   else if (dureeImpulsion >= 1643 && dureeImpulsion <= 1753 && !signalSonoreRecul) // --------------------------------- // Prépare le déclenchement du signal sonore de recul
  126.   {
  127.   signalSonoreRecul = true;                                                                                           // Active l'indicateur d'état du signal sonore de recul
  128.   t1TemposignalSonoreRecul = millis();                                                                                // Démarre la temporisation pour la fréquence de clignotement
  129.   }
  130.   else if (dureeImpulsion >= 1093 && dureeImpulsion <= 1203 && signalSonoreRecul) // ---------------------------------- // Prépare l'arrêt du signal sonore de recul
  131.   {
  132.   signalSonoreRecul = false;                                                                                          // Désactive l'indicateur d'état du signal sonore de recul
  133.   }
  134.  
  135.  
  136.   //*************************************************************************************************************************************************************************
  137.   if (cld && !clg) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active le clignotant droit
  138.   {
  139.   if (millis() - t1TempoClignotant <= 400)                                                                              // Active la Led droite tant que la Temporisation <= 400ms
  140.   {
  141.    digitalWrite (BrocheCLD, HIGH);
  142.   }
  143.   else if (millis() - t1TempoClignotant <= 800)                                                                         // Désactive la Led droite tant que la Temporisation <= 800ms
  144.   {
  145.   digitalWrite (BrocheCLD, LOW);  
  146.   }
  147.   else {t1TempoClignotant = millis();}                                                                                  // Redémarre la temporisation si la Temporisation > 800ms
  148.   }
  149.    
  150.   else if (!cld && clg) // -------------------------------------------------------------------------------------------- // Active le clignotant gauche
  151.   {
  152.   if (millis() - t1TempoClignotant <= 400)                                                                              // Active la Led gauche tant que la Temporisation <= 400ms
  153.   {
  154.   digitalWrite (BrocheCLG, HIGH);      
  155.   }
  156.   else if (millis() - t1TempoClignotant <= 800)                                                                         // Désactive la Led gauche tant que la Temporisation <= 800ms
  157.   {
  158.   digitalWrite (BrocheCLG, LOW);
  159.   }
  160.   else {t1TempoClignotant = millis();}                                                                                  // Redémarre la temporisation si la Temporisation > 800ms
  161.   }
  162.  
  163.   else if (cld && clg) // --------------------------------------------------------------------------------------------- // Active les warning
  164.   {
  165.   if (millis() - t1TempoClignotant <= 400)                                                                              // Active les 2 Leds tant que la Temporisation <= 400ms
  166.   {
  167.   digitalWrite (BrocheCLD, HIGH);
  168.   digitalWrite (BrocheCLG, HIGH);
  169.   }
  170.   else if (millis() - t1TempoClignotant <= 800)                                                                         // Désactive les 2 Leds tant que la Temporisation <= 800ms
  171.   {
  172.   digitalWrite (BrocheCLD, LOW);
  173.   digitalWrite (BrocheCLG, LOW);
  174.   }
  175.   else {t1TempoClignotant = millis();}                                                                                  // Redémarre la temporisation si la Temporisation > 800ms
  176.   }
  177.  
  178.   if (feuxStop) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active les feux stop
  179.   {
  180.   digitalWrite (BrocheStop, HIGH);                                                                                      // Active la sortie feux stop
  181.   }
  182.   else if (!feuxStop) // ---------------------------------------------------------------------------------------------- // Désactive les feux stop
  183.   {
  184.   digitalWrite (BrocheStop, LOW);                                                                                       // Désactive la sortie feux stop
  185.   }
  186.  
  187.   if (feuxRecul) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active les feux de recul
  188.   {
  189.   digitalWrite (BrocheRecul, HIGH);                                                                                             // Active la sortie feux de recul
  190.   }
  191.   else if (!feuxRecul) // --------------------------------------------------------------------------------------------- // Désactive les feux de recul
  192.   {
  193.    digitalWrite (BrocheRecul, LOW);                                                                                     // Désactive la sortie feux de recul
  194.   }
  195.  
  196.   if (veilleuses && !codes && !phares) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active les veilleuses
  197.   {
  198.   digitalWrite (BrocheVeilleuses, HIGH);
  199.   digitalWrite (BrocheCodes, LOW);
  200.   digitalWrite (BrochePhares, LOW);
  201.   digitalWrite (BrocheFeuxRouges, HIGH);                                                                                // Désactive la sortie phares
  202.   }
  203.  
  204.   else if (veilleuses && codes && !phares) // ------------------------------------------------------------------------- // Active les codes
  205.   {  
  206.   digitalWrite (BrocheVeilleuses, HIGH);
  207.   digitalWrite (BrocheCodes, HIGH);
  208.   digitalWrite (BrochePhares, LOW);
  209.   digitalWrite (BrocheFeuxRouges, HIGH);
  210.   }
  211.  
  212.   else if (veilleuses && codes && phares) // -------------------------------------------------------------------------- // Active les phares
  213.   {    
  214.   digitalWrite (BrocheVeilleuses, HIGH);
  215.   digitalWrite (BrocheCodes, HIGH);
  216.   digitalWrite (BrochePhares, HIGH);
  217.   digitalWrite (BrocheFeuxRouges, HIGH);                                                                                // Active la sortie veilleuses
  218.   }
  219.  
  220.   else if (!veilleuses && !codes && !phares) // ----------------------------------------------------------------------- // Désactive l'éclairage
  221.   {    
  222.   digitalWrite (BrocheVeilleuses, LOW);
  223.   digitalWrite (BrocheCodes, LOW);
  224.   digitalWrite (BrochePhares, LOW);
  225.   digitalWrite (BrocheFeuxRouges, LOW);                                                                                 // Désactive la sortie phares
  226.   }
  227.  
  228.   if (signalSonoreRecul) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active le signal sonore de recul
  229.   {
  230.   if (millis() - t1TemposignalSonoreRecul <= 630)                                                                       // Active le buzzer tant que la Temporisation <= 630ms
  231.   {
  232.   digitalWrite (BrocheBuzzer, HIGH);
  233.   }
  234.   else if (millis() - t1TemposignalSonoreRecul <= 1300)                                                                 // Désactive le buzzer tant que la Temporisation <= 1300ms
  235.   {
  236.   digitalWrite (BrocheBuzzer, LOW);
  237.   }
  238.   else {t1TemposignalSonoreRecul = millis();}                                                                           // Redémarre la temporisation si la Temporisation > 800ms
  239.   }
  240.   else if (!signalSonoreRecul) // ------------------------------------------------------------------------------------- // Désactive le signal sonore de recul
  241.   {
  242.    digitalWrite (BrocheBuzzer, LOW);                                                                                    // Désactive le buzzer
  243.   }
  244.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement