Wetterstation

Ein Projekt von Ben

Materialien:

Verkabelung:

LC-Display:



DHT11:

LDR Luxmeter (Helligkeitsmessung mit Hilfe eines Photowiederstandes)

Programmcode:

_______________________________________________________________________________________________________

Nur für LC-Display ausgabe:


#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#include

#define LDR_PIN                   0
#define MAX_ADC_READING           1023
#define ADC_REF_VOLTAGE           5.0
#define REF_RESISTANCE            5030
#define LUX_CALC_SCALAR           12518931
#define LUX_CALC_EXPONENT         -1.405

#include "DHT.h" //DHT Bibliothek laden

#define DHTPIN 7 //Der Sensor wird an PIN 7 angeschlossen   

#define DHTTYPE DHT11    // Es handelt sich um den DHT11 Sensor

DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit „dth“ angesprochen

void configureLCD(void)
{
  lcd.begin(16, 2);
  lcd.print(F("Initializing!"));
  delay(555);
 
  lcd.setCursor(0,1);
  lcd.print(F("Please wait..."));

  delay(1000);
  lcd.clear();
}
void setup(void)
{
  configureLCD();
}


void loop(void)

 
  int   ldrRawData;
  float resistorVoltage, ldrVoltage;
  float ldrResistance;
  float ldrLux;
 
  ldrRawData = analogRead(LDR_PIN);
 
 
  resistorVoltage = (float)ldrRawData / MAX_ADC_READING * ADC_REF_VOLTAGE;

 
  ldrVoltage = ADC_REF_VOLTAGE - resistorVoltage;
  
  ldrResistance = ldrVoltage/resistorVoltage * REF_RESISTANCE;

  ldrLux = LUX_CALC_SCALAR * pow(ldrResistance, LUX_CALC_EXPONENT);
 
 
  // Print out the LDR Illuminance to the LCD
  lcd.setCursor(0,0);
  lcd.print("LDR Lux Meter");
   
  lcd.setCursor(0,1);
  lcd.print(ldrLux);
  lcd.setCursor(7, 1);
  lcd.print(" lux");
 
  delay(5000);
  lcd.clear();


dht.begin();
  //delay(2000); //mögliche 2sek delay für trägen sensor
  float Luftfeuchtigkeit = dht.readHumidity();
 
  float Temperatur = dht.readTemperature();

  lcd.setCursor(0,0);
  lcd.print("Hum.: ");
  lcd.print(Luftfeuchtigkeit);
  lcd.print(" %");
  lcd.setCursor(0, 1);
  lcd.print("Temp.: ");
  lcd.print(Temperatur);
  lcd.print(" \337");
  lcd.print("C");
 
 
  delay(5000);
  lcd.clear();
}

______________________________________________________________________________________________________

Ausgabe an LCD UND Serieller Monitor:

 


#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#include

#define LDR_PIN                   0
#define MAX_ADC_READING           1023
#define ADC_REF_VOLTAGE           5.0
#define REF_RESISTANCE            5030
#define LUX_CALC_SCALAR           12518931
#define LUX_CALC_EXPONENT         -1.405

#include "DHT.h" //DHT Bibliothek laden

#define DHTPIN 7 //Der Sensor wird an PIN 7 angeschlossen   

#define DHTTYPE DHT11    // Es handelt sich um den DHT11 Sensor

DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit „dth“ angesprochen

void configureLCD(void)
{
  lcd.begin(16, 2);
  lcd.print(F("Initializing!"));
  delay(555);
 
  lcd.setCursor(0,1);
  lcd.print(F("Please wait..."));

  delay(1000);
  lcd.clear();
}
void setup(void)
{
  Serial.begin(9600);
  Serial.println(F("Light Sensor Test")); Serial.println("");
  configureLCD();
}


void loop(void)

 
  int   ldrRawData;
  float resistorVoltage, ldrVoltage;
  float ldrResistance;
  float ldrLux;
 
  ldrRawData = analogRead(LDR_PIN);
 
 
  resistorVoltage = (float)ldrRawData / MAX_ADC_READING * ADC_REF_VOLTAGE;

 
  ldrVoltage = ADC_REF_VOLTAGE - resistorVoltage;
  
  ldrResistance = ldrVoltage/resistorVoltage * REF_RESISTANCE;

  ldrLux = LUX_CALC_SCALAR * pow(ldrResistance, LUX_CALC_EXPONENT);
 
  // print out the results
  Serial.print("LDR Raw Data   : "); Serial.println(ldrRawData);
  Serial.print("LDR Voltage    : "); Serial.print(ldrVoltage); Serial.println(" volts");
  Serial.print("LDR Resistance : "); Serial.print(ldrResistance); Serial.println(" Ohms");
  Serial.print("LDR Illuminance: "); Serial.print(ldrLux); Serial.println(" lux");

  // Print out the LDR Illuminance to the LCD
  lcd.setCursor(0,0);
  lcd.print("LDR Lux Meter");
   
  lcd.setCursor(0,1);
  lcd.print(ldrLux);
  lcd.setCursor(7, 1);
  lcd.print(" lux");
 
  delay(5000);
  lcd.clear();


dht.begin();
  //delay(2000); //mögliche 2sek delay für trägen sensor
  float Luftfeuchtigkeit = dht.readHumidity();
 
  float Temperatur = dht.readTemperature();
 
  Serial.print("Luftfeuchtigkeit: ");
  Serial.print(Luftfeuchtigkeit);
  Serial.println(" %");
  Serial.print("Temperatur: ");
  Serial.print(Temperatur);
  Serial.println(" Grad Celsius");


  lcd.setCursor(0,0);
  lcd.print("Hum.: ");
  lcd.print(Luftfeuchtigkeit);
  lcd.print(" %");
  lcd.setCursor(0, 1);
  lcd.print("Temp.: ");
  lcd.print(Temperatur);
  lcd.print(" \337");
  lcd.print("C");
 
 
  delay(5000);
  lcd.clear();
}


_____________________________________________________________________________________________________


Quellen & Libary::