Bonjour,
Je suis très novice dans l'électronique et la programmation, et dans le mode arduino ainsi que dans ce forum.
Je souhaite utilisé mon ARDUINO UNO pour créer une petite station météo (histoire de débuter).
Dans ce cadre j'ai grappiller des codes ici ou là et j'ai réussi à obtenir des codes me renvoyant les données des différents capteurs. Individuellement mes codes marches bien. Le premier jet de jumelage des codes me donne satisfaction à l’exception de l'intégration d'un code.
Je vous joint une image de mon montage.
Voilà mon code multitâches (permettant l'affichage des données orientation du vent (potentiomètre); humidité; température; luminosité).
#define DHT11_PIN 0
//TEMPERATURE;HUMIDITE
byte read_dht11_dat()
{
byte i = 0;
byte result=0;
for(i=0; i< 8; i++)
{
while(!(PINC & _BV(DHT11_PIN)))
{};
delayMicroseconds(30);
if(PINC & _BV(DHT11_PIN))
result |=(1<<(7-i));
while((PINC & _BV(DHT11_PIN)));
}
return result;
}
//LUMINOSITE
int lightPin =A2;
void setup()
{
//TEMPERATURE;HUMIDITE
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
Serial.begin(9600);
}
void loop()
{
//TEMPERATURE;HUMIDITE
byte dht11_dat[5];
byte dht11_in;
byte i;
PORTC &= ~_BV(DHT11_PIN);
delay(18);
PORTC |= _BV(DHT11_PIN);
delayMicroseconds(1);
DDRC &= ~_BV(DHT11_PIN);
delayMicroseconds(40);
dht11_in = PINC & _BV(DHT11_PIN);
if(dht11_in)
{
delay(1000);
return;
}
delayMicroseconds(80);
dht11_in = PINC & _BV(DHT11_PIN); //
if(!dht11_in)
{
return;
}
delayMicroseconds(80);
for (i=0; i<5; i++)
{ dht11_dat[i] = read_dht11_dat();}
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];
if(dht11_dat[4]!= dht11_check_sum)
{
}
//GIROUETTE
int sensorValue = analogRead(A1);
Serial.print(sensorValue);
Serial.print(";");
//TEMPERATURE;HUMIDITE
Serial.print(dht11_dat[0], DEC);
Serial.print(",");
Serial.print(dht11_dat[1], DEC);
Serial.print(";");
Serial.print(dht11_dat[2], DEC);
Serial.print(",");
Serial.print(dht11_dat[3], DEC);
Serial.print(";");
//LUMINOSITE
Serial.println(analogRead(lightPin));
delay(2000);
}
Et je souhaiterai inclure se code me permettant d'affiché à la suite la vitesse du vent:
//ANEMOMETRE
volatile int NbTopsFan;
int Calc;
int hallsensor = 2;
void rpm ()
{
NbTopsFan++;
}
//ANEMOMETRE
void setup() //
{
pinMode(hallsensor, INPUT);
Serial.begin(9600);
attachInterrupt(0, rpm, RISING);
}
//ANEMOMETRE
void loop ()
{
NbTopsFan = 0; //Set NbTops to 0 ready for calculations
sei(); //Enables interrupts
delay (1000); //Wait 1 second
cli(); //Disable interrupts
Calc = ((NbTopsFan*0.000025*3.14159265*1)*60*60);//vitesse du vent en Km/H
Serial.println(Calc, DEC); //Prints the number calculated above
}
Je ne sais pas si le problème vient des tempo ou autre mais lorsque j'essaye de l'intégré cela m’entraîne un bug et je n'ai aucun retour de donnée, merci de bien vouloir m'aider.