Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //**************************************************************************************************************************************************************************
- //***************************************** Module Signalisation - Communication unidirectionnel via PWM - Carte Seeeduino XIAO **************************************************
- // Bien filtrer l'alimentation car le déclenchement du Buzzer peut générer des perturbations lors de son enclenchement *****************************************************
- // Attention : sortie (D10) NANO ==> fréquence PWM = 490Hz
- // DFT Le 07/0/2022 19H10
- //**************************************************************************************************************************************************************************
- #define BrocheEntreePWM 10 // Broche (2) 10 entrée impulsion PWM
- #define BrocheCLD 0
- #define BrocheCLG 1
- #define BrocheStop 2
- #define BrocheRecul 3
- #define BrocheVeilleuses 4
- #define BrocheCodes 5
- #define BrochePhares 6
- #define BrocheBuzzer 7
- #define BrocheFeuxRouges 8
- boolean cld = false; // Indicateur d'état du clignotant droit
- boolean clg = false; // Indicateur d'état du clignotant gauche
- unsigned long t1TempoClignotant = 0; // Début de la temporisation pour la fréquence de clignotement
- boolean feuxStop = false; // Indicateur d'état des feux stop
- boolean feuxRecul = false; // Indicateur d'état des feux de recul
- boolean veilleuses = false; // Indicateur d'état des veilleuses
- boolean codes = false; // Indicateur d'état des codes
- boolean phares = false; // Indicateur d'état des phares
- boolean signalSonoreRecul = false; // Indicateur d'état du signal sonore de recul
- unsigned long t1TemposignalSonoreRecul = 0; // Début de la temporisation pour la fréquence de clignotement
- void setup()
- {
- pinMode(BrocheEntreePWM, INPUT_PULLUP); // Configuration des ports en Entrée / Sorties
- pinMode (BrocheCLD, OUTPUT);
- pinMode (BrocheCLG, OUTPUT);
- pinMode (BrocheStop, OUTPUT);
- pinMode (BrocheRecul, OUTPUT);
- pinMode (BrocheVeilleuses, OUTPUT);
- pinMode (BrocheCodes, OUTPUT);
- pinMode (BrochePhares, OUTPUT);
- pinMode (BrocheBuzzer, OUTPUT);
- pinMode (BrocheFeuxRouges, OUTPUT);
- }
- void loop()
- {
- //*************************************************************************************************************************************************************************
- //noInterrupts();
- unsigned long dureeImpulsion = pulseIn(BrocheEntreePWM, HIGH); // +++++++++++++++++++++++++++++++++++++++++++++++++++ // Lecture de la durée d'impulsion du signal PWM envoyé par le module principal
- //interrupts();
- //*************************************************************************************************************************************************************************
- if (dureeImpulsion >= 144 && dureeImpulsion <= 254 && (!cld || cld && clg)) // ++++++++++++++++++++++++++++++++++++++ // Prépare le déclenchement du clignotant droit
- {
- cld = true; clg = false; // Active l'indicateur d'état du clignotant droit
- t1TempoClignotant = millis(); // Démarre la temporisation pour la fréquence de clignotement
- }
- else if (dureeImpulsion >= 280 && dureeImpulsion <= 390 && (!clg || cld && clg)) // ---------------------------------// Prépare le déclenchement du clignotant gauche
- {
- cld = false; clg = true; // Active l'indicateur d'état du clignotant gauche
- t1TempoClignotant = millis(); // Démarre la temporisation pour la fréquence de clignotement
- }
- else if (dureeImpulsion >= 415 && dureeImpulsion <= 525 && (cld || clg || cld && clg)) // ---------------------------// Prépare l'arrêt des clignotants ou des warning
- {
- cld = false; clg = false; // Désactive les indicateurs d'état des clignotants
- }
- else if (dureeImpulsion >= 551 && dureeImpulsion <= 661 && (!cld && !clg || cld && !clg || !cld && clg)) // --------- // Prépare le déclenchement du warning
- {
- cld = true; clg = true; // Active les indicateurs d'état du clignotant droit et gauche
- t1TempoClignotant = millis(); // Démarre la temporisation pour la fréquence de clignotement
- }
- else if (dureeImpulsion >= 686 && dureeImpulsion <= 796 && !feuxStop) // ------------------------------------------ // Prépare le déclenchement des feux stop
- {
- feuxStop = true; // Active l'indicateur d'état des feux stop
- }
- else if (dureeImpulsion >= 957 && dureeImpulsion <= 1067 && feuxStop) // ------------------------------------------- // Prépare l'arrêt des feux stop
- {
- feuxStop = false; // Désactive l'indicateur d'état des feux stop
- }
- else if (dureeImpulsion >= 1228 && dureeImpulsion <= 1338 && !feuxRecul) // ----------------------------------------- // Prépare le déclenchement des feux de recul
- {
- feuxRecul = true; // Active l'indicateur d'état des feux de recul
- }
- else if (dureeImpulsion >= 1460 && dureeImpulsion <= 1570 && feuxRecul) // ------------------------------------------ // Prépare l'arrêt des feux de recul
- {
- feuxRecul = false; // Désactive l'indicateur d'état des feux de recul
- }
- else if (dureeImpulsion >= 1794 && dureeImpulsion <= 1904 && !veilleuses) // ---------------------------------------- // Prépare le déclenchement des veilleuses
- {
- veilleuses = true; // Active l'indicateur d'état des veilleuses
- codes = false;
- phares = false;
- }
- else if (dureeImpulsion >= 1906 && dureeImpulsion <= 2016 && !codes) // --------------------------------------------- // Prépare le déclenchement des codes
- {
- codes = true; // Active l'indicateur d'état des codes
- veilleuses = true;
- phares = false;
- }
- else if (dureeImpulsion >= 1364 && dureeImpulsion <= 1474 && !phares)
- {
- phares = true; // Active l'indicateur d'état des phares
- codes = true;
- veilleuses = true;
- }
- else if (dureeImpulsion >= 822 && dureeImpulsion <= 932 && (veilleuses || codes || phares)) // -------------------- // Prépare l'arrêt de l'éclairage
- {
- veilleuses = false; // Désactive l'indicateur d'état des veilleuses
- codes = false; // Désactive l'indicateur d'état des codes
- phares = false; // Désactive l'indicateur d'état des phares
- }
- else if (dureeImpulsion >= 1643 && dureeImpulsion <= 1753 && !signalSonoreRecul) // --------------------------------- // Prépare le déclenchement du signal sonore de recul
- {
- signalSonoreRecul = true; // Active l'indicateur d'état du signal sonore de recul
- t1TemposignalSonoreRecul = millis(); // Démarre la temporisation pour la fréquence de clignotement
- }
- else if (dureeImpulsion >= 1093 && dureeImpulsion <= 1203 && signalSonoreRecul) // ---------------------------------- // Prépare l'arrêt du signal sonore de recul
- {
- signalSonoreRecul = false; // Désactive l'indicateur d'état du signal sonore de recul
- }
- //*************************************************************************************************************************************************************************
- if (cld && !clg) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active le clignotant droit
- {
- if (millis() - t1TempoClignotant <= 400) // Active la Led droite tant que la Temporisation <= 400ms
- {
- digitalWrite (BrocheCLD, HIGH);
- }
- else if (millis() - t1TempoClignotant <= 800) // Désactive la Led droite tant que la Temporisation <= 800ms
- {
- digitalWrite (BrocheCLD, LOW);
- }
- else {t1TempoClignotant = millis();} // Redémarre la temporisation si la Temporisation > 800ms
- }
- else if (!cld && clg) // -------------------------------------------------------------------------------------------- // Active le clignotant gauche
- {
- if (millis() - t1TempoClignotant <= 400) // Active la Led gauche tant que la Temporisation <= 400ms
- {
- digitalWrite (BrocheCLG, HIGH);
- }
- else if (millis() - t1TempoClignotant <= 800) // Désactive la Led gauche tant que la Temporisation <= 800ms
- {
- digitalWrite (BrocheCLG, LOW);
- }
- else {t1TempoClignotant = millis();} // Redémarre la temporisation si la Temporisation > 800ms
- }
- else if (cld && clg) // --------------------------------------------------------------------------------------------- // Active les warning
- {
- if (millis() - t1TempoClignotant <= 400) // Active les 2 Leds tant que la Temporisation <= 400ms
- {
- digitalWrite (BrocheCLD, HIGH);
- digitalWrite (BrocheCLG, HIGH);
- }
- else if (millis() - t1TempoClignotant <= 800) // Désactive les 2 Leds tant que la Temporisation <= 800ms
- {
- digitalWrite (BrocheCLD, LOW);
- digitalWrite (BrocheCLG, LOW);
- }
- else {t1TempoClignotant = millis();} // Redémarre la temporisation si la Temporisation > 800ms
- }
- if (feuxStop) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active les feux stop
- {
- digitalWrite (BrocheStop, HIGH); // Active la sortie feux stop
- }
- else if (!feuxStop) // ---------------------------------------------------------------------------------------------- // Désactive les feux stop
- {
- digitalWrite (BrocheStop, LOW); // Désactive la sortie feux stop
- }
- if (feuxRecul) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active les feux de recul
- {
- digitalWrite (BrocheRecul, HIGH); // Active la sortie feux de recul
- }
- else if (!feuxRecul) // --------------------------------------------------------------------------------------------- // Désactive les feux de recul
- {
- digitalWrite (BrocheRecul, LOW); // Désactive la sortie feux de recul
- }
- if (veilleuses && !codes && !phares) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active les veilleuses
- {
- digitalWrite (BrocheVeilleuses, HIGH);
- digitalWrite (BrocheCodes, LOW);
- digitalWrite (BrochePhares, LOW);
- digitalWrite (BrocheFeuxRouges, HIGH); // Désactive la sortie phares
- }
- else if (veilleuses && codes && !phares) // ------------------------------------------------------------------------- // Active les codes
- {
- digitalWrite (BrocheVeilleuses, HIGH);
- digitalWrite (BrocheCodes, HIGH);
- digitalWrite (BrochePhares, LOW);
- digitalWrite (BrocheFeuxRouges, HIGH);
- }
- else if (veilleuses && codes && phares) // -------------------------------------------------------------------------- // Active les phares
- {
- digitalWrite (BrocheVeilleuses, HIGH);
- digitalWrite (BrocheCodes, HIGH);
- digitalWrite (BrochePhares, HIGH);
- digitalWrite (BrocheFeuxRouges, HIGH); // Active la sortie veilleuses
- }
- else if (!veilleuses && !codes && !phares) // ----------------------------------------------------------------------- // Désactive l'éclairage
- {
- digitalWrite (BrocheVeilleuses, LOW);
- digitalWrite (BrocheCodes, LOW);
- digitalWrite (BrochePhares, LOW);
- digitalWrite (BrocheFeuxRouges, LOW); // Désactive la sortie phares
- }
- if (signalSonoreRecul) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Active le signal sonore de recul
- {
- if (millis() - t1TemposignalSonoreRecul <= 630) // Active le buzzer tant que la Temporisation <= 630ms
- {
- digitalWrite (BrocheBuzzer, HIGH);
- }
- else if (millis() - t1TemposignalSonoreRecul <= 1300) // Désactive le buzzer tant que la Temporisation <= 1300ms
- {
- digitalWrite (BrocheBuzzer, LOW);
- }
- else {t1TemposignalSonoreRecul = millis();} // Redémarre la temporisation si la Temporisation > 800ms
- }
- else if (!signalSonoreRecul) // ------------------------------------------------------------------------------------- // Désactive le signal sonore de recul
- {
- digitalWrite (BrocheBuzzer, LOW); // Désactive le buzzer
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement