Ein freundliches Hallo in die runde,
und hmmm ja wieder ein blutiger anfänger. Kurz zu mir ich bin 34 Jahre und hatte bis vor 1/2 Jahr mit Microcontroller und co nix am hut.
(wehn das drum herum nicht interessiert scrollt jetzt dann weiter bis zur ------ lienie)
bis ich auf ein Arduino und ein CNC Shield im internet gestossen bin und damit endlich eine alte CNC Fräse angesteuern konnte (sie lief damals unter DOS und ansteuerung war nicht mehr vorhanden)
allerdings lies mich der Microcontroller nicht mehr in ruhe fand es wahnsinig interesant, worauf ich mir nochmal einen besorgte mit zubehör.
Probierte hier und da und schon hatte ich ein Projekt im Kopf,
Ich habe nämlich das Problem an einem 40 Jahr alten Wohnwagen mit dem Kühlschrank wenn es im Sommer zimmlich warm ist bzw. ich damit in Wärmeren Länder bin bekomme ich die Warmluft hinten nicht schnell genug weg und er hört dann auf richtig zu kühlen. also baute ich zwei PC lüfter ein und klemmte die mit einem Schalter an die Batterie. was dann zur folge hatte das ich nach 2 Tagen keinen saft mehr hatte da unter anderem die lüfter immer volle pulle durchgelaufen sind
dann einen Skatch genommen der Temperatur misst und ab einer bestimmten Temperatur ein alarm gibt, anstatt des alarms nehme ich ein Relais um die Lüfter an und aus zu schalten...
Im Prinzip hatte ich auch schon alles was ich vorerst wollte, dann ohh LCD Display um werte Abzulesen währe auch cool, aber es sollte nicht immer an sein, und um eventuell später noch andere sachen abzufragen
und ab Jetzt beginnen meine Probleme......
wenn ich wie im ersten Skatch die Taste drücke zeigt es mir die Temperatur auf dem display an aber ich muss natürlich auf der Taste bleiben, ich will aber das bei einmaligem drücken der Taste die beleuchtung und schrift anbleibt und bei erneutem drücken das Display und beleuchtung wieder aus geht. ( okey ich könnte auch einfach einen entsprechenden schalter dafür nehmen, will ich aber nich währe ja sonst langweilig)
Das hab ich zwar im zweiten Skatch hinbekommen allerdings misst es mir jetzt die Temperatur nur jeweils wenn ich die Taste drücke, somit hab ich zwar das mit dem Display hinbekommen aber dafür keine automatische Temperaturmesung mehr....
Jetzt meine Frage wie bekomme ich es hin das einmal die temperatur gemessen wird und das Relais schaltet ohne das die tasten drückerei dies beeinflusst....
ich werwarte keine komplettlösung ich währe schon zu frieden in die richtige richtung geschupst zu werden da ich schon einiges versuchte aber nicht weiter komme, und natürlich will ich es verstehen wie es funktioniert.
Skatch 1
/* Steuerung für Kühlschrank im Wohnwagen "Kühlschrank bekommt bei Hohen ausentemperaturen die abwärme
* nicht weg transportiert" dadurch kühlt Kühlschrank nicht mehr.
*
* Wenn eine Temperatur von X C° erreicht oder überschritten ist wird über ein Relais ein oder zwei
* PC lüfter eingeschaltet kühlt er wieder ab unter X C° schalten die Lüfter wieder ab
*/
//#include <OneButton.h> //OneButten Bibliothek hochladen
#include <Wire.h> //Wire Bibliothek hochladen
#include <LiquidCrystal_I2C.h> //LiquidCrystal Bibliothek hochladen
LiquidCrystal_I2C lcd(0x3F, 16, 2); // angaben um welches LCD Display es sich handelt
int LM35 = A0; // Pin A0 heißt jetzt LM35
int sensorwert1; // Sensorwert vom LM35
int temperatur = 0; // Legt temperatur mit Startwert 0 fest
int t=20; // t = 20ms zeit stop
int luefter = 5; // Pin 5 wird als Luefter bezeichnet
int Taste = 4; // Pin 3 wird als Taste bezeichnet
int TastenStatus = 0; // TastenStatus wird mit 0 (LOW) festgelegt
//------------------------------------------------------------------------------------------------
void setup() {
Serial.begin(9600); // startet den Serialenmonitor
lcd.begin(); // Startet das LCD Display
pinMode (luefter,OUTPUT); // setzt den Pin 5 (luefter) als ausgang fest
pinMode (Taste, INPUT); // setzt den Pin 4 (Taste) als eingang fest
}
//------------------------------------------------------------------------------------------------
void loop() {
TastenStatus = digitalRead(Taste); // liest den TastenStatus ob HIGH (gedrückt) oder LOW (nicht gedrückt)
Serial.print(" Taste"); // Sreibt im Serialmonitor das wort Taste
Serial.println(TastenStatus); // und den Status ob HIGH (1) oder LOW (0)
if (digitalRead(TastenStatus) == LOW) // wenn TastenStatus HIGH also 1 ist schaltet das lcd Display an.
{
lcd.display();
lcd.backlight();
}
if (digitalRead(TastenStatus) == HIGH) // wenn Tastenstatus LOW Display und beleuchtung aus
{
lcd.noDisplay();
lcd.noBacklight();
}
sensorwert1 = analogRead(LM35); // sensorwert auslesen vom (LM35)
temperatur = map (sensorwert1,0,307,0,150); // map (sensorwert,0,307,0,150) rechnet die LM35 Daten um und zeigt ise als temperatur an
delay(t); // (t) sagt 1000 milisec warten siehe oben?"
Serial.print(temperatur); // gibt an serial Monitor die Temperatur aus
Serial.println(" C° "); // schreibt hinte der Temperatur (C°)
lcd.setCursor(0,0); // setzt den Cursur in die linke obere ecker der ersten zeile
lcd.println("Temperatur : ") ; // schreibt im LCD Display Temperatur :
lcd.setCursor(11,0); // setzt den Cursor auf die 11te stelle
lcd.print( temperatur ); // schreibt den gemesenen wert, und das kürzel C dahinter
lcd.println(" C ");
if (temperatur>=27) // ist die temperatur gleich oder höher als 37°
{digitalWrite(luefter,HIGH);} // schaltet der lüfter auf HIGH also an
else // wenn nicht bleibt der lüfter aus
{digitalWrite(luefter,LOW);}
}