Bon bah voila, je crois avoir fait tous ce qui est demandé sauf la fonction millis que je ne comprend pas. Voila comment je l'avais faite :
if(temps - millis() > 500)
Sinon le code fait comme vous avez demandé est ici : Votre avis ?
#include<LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7); //Déclaration des broches de l'afficheur A FINIR
unsigned int nbrtour = 0; // Indique que la variable commence a 0
unsigned int nbrtourCopie; // Definir la valeur du nombre de tour en copie pour calcul
float nbtour; // Definie la variable du nombre de tour
float vitessems; // Definie la variable vitesse en m/s
float vitessekm; // Definie la variable en km/h
char compteur = 0;
unsigned long temps = millis();
#define piezoPin 4
void setup()
{
pinMode (2, INPUT); //Entree pour signal anemometre
pinMode(piezoPin, OUTPUT); //Sortit pour le Haut-Parleur
attachInterrupt (0, anemometre, RISING); // capteur de front montant
lcd.begin(16, 2); //Regle la taille de l'ecran LCD
Serial.begin(9600);
}
void loop()
{
delay(1000); // 1 Seconde de Mesure
noInterrupts(); // désactive les interruptions
nbrtourCopie = nbrtour;
nbtour=nbrtourCopie/2; //Convertie le nombre d'impulsions en nombre de tour
nbrtour = 0;
vitessems=2 * 3.1415 * 0.09 * nbtour; //Convertie le nombre de tour en une vitesse en m/s
vitessekm=vitessems * 3.6; //Vitesse en m/s passe en km/h
lcd.setCursor(2,0);
lcd.print(vitessekm);
lcd.setCursor(2,1);
lcd.print("km/h");
delay(1000);
lcd.clear();
if (vitessekm < 30)
{
lcd.setCursor(2,0);
lcd.print("AUCUN DANGER");
delay(2000);
lcd.clear();
interrupts(); // réactive les interruptions
}
if (vitessekm >= 30)
{
lcd.setCursor(2,0);
lcd.print("DANGER ELEVER");
tone (piezoPin,330); //Broche, Fréquence, Durée
delay(2000);
digitalWrite(piezoPin, LOW);
lcd.clear();
interrupts(); // réactive les interruptions
}
}
void anemometre()
{
nbrtour++; /*La pin recoie un signal, la valeur s'incremente de 1*/
}
En tous cas Merci énormément de votre aide