Bonjour, Nous travaillons sur une station météo arduino. On souhaite relevé la vitesse du vent grâce à un anémomètre mais à chaque boucle la vitesse du vent s'accumule donc elle est très élevé. On souhaite relevé la vitesse du vent sur une période de 1 seconde .
notre programme :
#include "DHT.h" // Librairie des capteurs DHT
#define DHTPIN 4 // Changer le pin sur lequel est branché le DHT
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#include "Wire.h"
#include "Adafruit_BMP085.h"
Adafruit_BMP085 bmp;
int lum_pin = 0;
int lumi;
DHT dht(DHTPIN, DHTTYPE);
int portpot = A1;
int valeurpot;
int basculement = 0;
int nbrtour = 0;
void setup(void) {
Serial.begin(9600);
bmp.begin();
dht.begin();
pinMode (3, INPUT);
attachInterrupt (1, pluviometre, RISING);
pinMode (2, INPUT);
attachInterrupt (0, anemometre, RISING);
}
void loop(void) {
//-------------------------------LUMIERE-----------------------------------
lumi = analogRead(lum_pin);
if (lumi < 100) {
Serial.println("a");
} else if (lumi < 500) {
Serial.println("b");
} else if (lumi < 850) {
Serial.println("c");
} else {
Serial.println("d");
}
delay(3000);
//-------------------------------BAROMETRE---------------------------------
int Press;
Press = bmp.readPressure(); //Lire le capteur
Serial.println(Press);
delay(3000);
//-------------------------------HUMIDITER---------------------------------
float humi = dht.readHumidity();
//Serial.println(humi);
float temp = dht.readTemperature();
if (isnan(humi) || isnan(temp))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
int hum10;
hum10 = int(humi*10);
Serial.println(hum10);
Serial.println(temp);
delay(3000);
//---------------------------------GIROUETTE----------------------------------
valeurpot = analogRead(A1);
if (valeurpot >770 && valeurpot < 800)
{
Serial.println("N");
}
else if (valeurpot >460 && valeurpot < 470)
{
Serial.println("NE");
}
else if (valeurpot >880 && valeurpot < 900)
{
Serial.println("NO");
}
else if (valeurpot>940 && valeurpot<950)
{
Serial.println("O");
}
else if (valeurpot>85 && valeurpot<100)
{
Serial.println("E");
}
else if (valeurpot>285 && valeurpot<295)
{
Serial.println("S");
}
else if (valeurpot>630 && valeurpot<640)
{
Serial.println("SO");
}
else if (valeurpot>180 && valeurpot<195)
{
Serial.println("SE");
}
delay(3000);
//-----------------------------pluviometre-----------------------------------
Serial.println(basculement/5*0.2792); // calcul de la vitesse du vent et envoie sur serial
//Serial.println ("mm");
basculement = 0;
delay(1000);
//-----------------------------anemometre-------------------------------------
Serial.print(2*3.1415*0.05*nbrtour*3.6/2); // calcul de la vitesse du vent et envoie sur serial
Serial.println (" km/h");
nbrtour = 0;
delay(1000);
}
void pluviometre()
{
basculement++;
}
void anemometre()
{
nbrtour++;
}