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();
}