Untitled
unknown
c_cpp
4 years ago
2.9 kB
5
Indexable
#define trigPin 5 //Trig #define echoPin 4 //Echo #define avertisseur 9 //Led int mindist = 100; //On indique la distance en dessous de laquelle int fadeValue = 0; bool etat = false;// Variable d'état de la LED, c'est un booléen, et donc n'accepte que true et false (ou 0 et 1) comme valeurs // Déclaration de la FONCTION de mesure de distance, c'est ton code, mais dans une fonction. C renvoie la distance en "long" // D'où son typage "long" long mesure() { long duree, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); //Trig envois pendant 10ms digitalWrite(trigPin, LOW); // On calcul le temps pour l'aller retour du signal duree = pulseIn(echoPin, HIGH); distance = duree*340/(2*10000); return distance; } // Déclaration de la fonction faeIn. Elle ne retourne rien, c'est un typage "void" // Toujours ton code. void fadeIn() { fadeValue = 0; for (fadeValue <= 255; fadeValue += 1;) { // sets the value (range from 0 to 255): analogWrite(avertisseur, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(10); } etat = true; // Une fois la LED à fond, on la déclare allumée } // Idem void fadeOut() { fadeValue = 255; for (fadeValue >= 0; fadeValue -= 1;) { // sets the value (range from 0 to 255): analogWrite(avertisseur, fadeValue); // wait for 30 milliseconds to see the dimming effect delay(30); } etat = false; // Une fois la LED éteinte, on la déclare... Bin éteinte... } void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); //On défini Trig comme une sortie pinMode(echoPin, INPUT); //On défini Echo comme une entrée pinMode(avertisseur, OUTPUT); //On défini la led comme une sortie } void loop() { if(mesure() <= mindist)// Si la distance récupérée dans la fonction mesure() est inferieure ou égale à mindist { if(etat = false)// ET si la LED est eteinte { fadeIn();//On allume la LED en éxécutant fadeIn } }// Si etat = true, on ne fait rien else if(mesure() > mindist)// Si la distance récupérée dans la fonction mesure() est superieure à mindist { if(etat =true)// ET si la LED est allumée { fadeOut(); } } }//Sinon, on ne fait rien, la loop recommence. // DISCLAMER // Voilà, c'est ton code mais restructuré. Ce qu'il te manquait, c'était ça et aussi la variable booléenne // qui te permet de connatre l'état de ta LED, sino, à chaque fois que la distance change, meme si elle est dans la bonne // tranche, ton fade se ré-éxécute, d'où l'espèce de clignottement... // Je n'ai pas testé le code, pas ce qu'il faut sous la main, mais ça devrait faire le taf. // Du coup t'a un bel exemple simple de structure de code et d'utilisation des fonctions. // Si ca ne marche pas n'hésite pas à me contacter
Editor is loading...