hallo zusammen,...
hab gerade auch das problem! ..will mit einem LM35 und einem LDR, temp und helligkeit messen und darüber die relaiskarte ansteuern.
mein code funktioniert, aber ich bekomme immer stör signale rein, wenn ich den LDR teste..
also sobald ich mit der taschen lampe drüber leute, schlatet das relais für licht. aber der für den ventilator, (über LM35 geregelt)
fängt sich störungen ein. kondensator zwischen +5V undGND vom LM35 brignt nix.. auch der versuch, die restlichen analogen
eingänge über einen 10Kohm zu definieren, brachte kenen erfolg... X-(
hat mir jemand vieleicht ein tipp?
EDIT: in einem buch habe ich gelesen, dass man sehr oft messen muss und dann einen mittelwert ziehen. (grob gesagt) muss ich das hier auch tun um einen festen wert zu bekommen, der nicht alle 0,1 sek zwischen ca. 20.0°C und ca. 45.0°C ..
anbei der code:
// Außgänge erstellen
int out1 = 2;
int out2 = 3;
int out5 = 6;
int out6 = 7;
int out7 = 8;
int out8 = 9;
// Analoge Eingänge erstellen
int TempSensor = A0;
int LichtSensor = A5;
// Variablen erstellen
float TempSensorWert = 0.0;
float TempSensorWertX = 0.0;
int LichtSensorWert = 0;
//********************************************************************************
//**********_void_setup_ beginnt**************************************************
//********************************************************************************
void setup(){
Serial.begin(9600);
pinMode(out1, OUTPUT);
pinMode(out2, OUTPUT);
pinMode(out5, OUTPUT);
pinMode(out6, OUTPUT);
pinMode(out7, OUTPUT);
pinMode(out8, OUTPUT);
pinMode(TempSensor, INPUT);
pinMode(LichtSensor, INPUT);
}
void loop(){
// ***Alle relevanten Werte einlesen (Eingabe)***
TempSensorWert = analogRead(TempSensor);
LichtSensorWert = analogRead(LichtSensor);
// ***Rechenoperationen (Verarbeitung) Temp.Sensor***
TempSensorWert = (TempSensorWert * 100.0 * 4.8) / 1024.0;
TempSensorWertX = TempSensorWert;
if(TempSensorWertX >= 28.0){ // Wenn Temp über 28°C geht
TempSensorWertX = 50.0; // Setze den wert auf 50 (einschalten)
}
if(TempSensorWertX <=27.0){
TempSensorWertX = 24.0;
}
// ***Ausgabe***
// ** Ausgabe Serieller Monitor
Serial.print("Temp:");
Serial.print(TempSensorWert);
Serial.print(",");
Serial.print(" ");
Serial.print("Helligkeits Wert:");
Serial.println(LichtSensorWert);
// *** Ausgabe an Ausgänge***
// *** Temperatur Schalten ***
if(TempSensorWertX == 50.0){ //
digitalWrite(out1, LOW);
digitalWrite(out7, LOW);
digitalWrite(out8, HIGH);
}
if(TempSensorWertX == 24.0){
digitalWrite(out1, HIGH);
digitalWrite(out7, HIGH);
digitalWrite(out8, LOW);
}
// *** Licht Schalten
if(LichtSensorWert <= 400){ //
digitalWrite(out2, LOW);
digitalWrite(out5, LOW);
digitalWrite(out6, HIGH);
}
if(LichtSensorWert >= 600){
digitalWrite(out2, HIGH);
digitalWrite(out5, HIGH);
digitalWrite(out6, LOW);
}
delay(500);
}