/***************************************************************************************** CLIGNOTANT, FEUX DE RECUL ET FEUX STOP CONSTANT ****************************************************************************************** Ce programme necessite l'utilisation d'une radio aillant au moins deux voies proportionnelles Il permet de commander, les clignotants, les feux de detresse, les feux stop, et les phares de recul d'un vehicule radiocommande. ................................................... * Les clignotants sont automatiquement actionnes en fonction de la direction prise par le vehicule. * Lorsque le vehicule radiocommande est en marche arriere automatiquement les feux de recul s'allument. * Lorsque le vehicule passe a l'arret, les feux stop s'allument, jusqu'a ce qu'il redemarre. ................................................... Pin 0 connecte en parallele avec la voie direction Pin 2 connecte en parallele à la voie du variateur Pin 7 connecte au feux stop Pin 8 connecte au feu de recul Pin 9 connecte au clignotant droit Pin 10 connecte au clignotant gauche ======================================================================================= */ #define signal 0 // voie direction #define signalv 2 // Voie variateur #define f_stop 7 // Feux stop sur le pin 2 #define f_recul 8 // Feux de recul sur le pin 1 #define droite 9 // clignotant droit #define gauche 10 // clignotant gauche int EtatLedd = LOW; // etat clignotant droit int EtatLedg = LOW; // etat clignotant gauche int EtatLedw = LOW; // etat warning int val1; // valeur du signal int valw; // valeur du warning int vallv; // Valeur du signalv recepteur int neutrev; // valeur du neutre int neutred ; // valeur du neutre int neutrew ; // valeur du neutre warning int x = 100; // plage neutre unsigned long Temps_Precedent = 0; const long intervale = 300; // frequence clignotants const long intervalew = 200; // frequence warning //----------------------------------------------------------------------------------------- void setup() { pinMode(signal, INPUT); // pin signal en entree pinMode(droite, OUTPUT); // pin led droite en sortie pinMode(gauche, OUTPUT); // pin led gauche en sortie pinMode(signalv, INPUT); // Declare signalv comme une entree pinMode(f_recul, OUTPUT); // Declare le pin1 (feu de recul) en sortie pinMode(f_stop, OUTPUT); // Declare le pin2 (feux stop) en sortie neutred = pulseIn(signal, HIGH); // saisie du neutre neutrev = pulseIn(signalv, HIGH); // enregistrement du neutre } //---------------------------------------------------------------------------------------- void loop() { vallv = pulseIn(signalv, HIGH); // Lire le signal et de le stocker dans vallv if (vallv < neutrev - x) { digitalWrite(f_recul, HIGH); } // Si marche arriere else { digitalWrite(f_recul, LOW); } if ( vallv < (neutrev + x) && vallv > (neutrev - x) ) { digitalWrite(f_stop, HIGH); } else { digitalWrite(f_stop, LOW); } direction(); } //----------------------------------------------------------------------------------------- void direction() { val1 = pulseIn(signal, HIGH); //Lire le signal et de le stocker dans val1 if ( val1 > neutred + x ) { actionadroite(); } else { digitalWrite(droite, LOW); EtatLedd = LOW; } if ( val1 < neutred - x ) { actiongauche(); } else { digitalWrite(gauche, LOW); EtatLedg = LOW; } } //------------------------------------------------------------------------------------------ void actionadroite() { unsigned long Temps_Actuel = millis(); if (Temps_Actuel - Temps_Precedent >= intervale) { Temps_Precedent = Temps_Actuel; if (EtatLedd == LOW) { EtatLedd = HIGH; } else { EtatLedd = LOW; } digitalWrite(droite, EtatLedd); } } //--------------------------------------------------------------------------------------------- void actiongauche() { unsigned long Temps_Actuel = millis(); if (Temps_Actuel - Temps_Precedent >= intervale) { Temps_Precedent = Temps_Actuel; if (EtatLedg == LOW) { EtatLedg = HIGH; } else { EtatLedg = LOW; } digitalWrite(gauche, EtatLedg); } } //*********************************** FIN DE PROGRAMME ***************************************