Hiho,
und ein weiteres mal geht es voran mit unserem Tutorial.
Also was ist bisher passiert? Nun, es stand die Frage im Raum wie wir unser Licht ein und aus schalten können und es wurden ein paar möglichkeiten diskutiert. In kurzform:
1. Wir vergleichen die verstrichenen Sekunden mit der Aktuellen anzahl der Sekunden und schalten zu einer gewissen Zeit an und aus
2. Wir sagen wann es an gehen soll und wie lange ( wieviele Std) es Hell sein soll
3. Wir trigern nen timer der den Strom abstellt.
Für unser Projekt wollen wir uns für die erste Möglichkeit entscheiden. Also brauchen wir erstmal wieder ein paar Variablen die unsere Zeiten halten:
Code:
int DaylightPowerPin = 22; // Relay 1
int DaylightPowerState = HIGH;
float Sunrise = get_ts(10,30,0); //34200; // 9:30
float Sunset = get_ts(22,30,0); //77400; //21:30
und im Setup müssen wir noch die Pins richtig setzen:
Code:
pinMode(DaylightPowerPin, OUTPUT);
digitalWrite(DaylightPowerPin, HIGH);
Wir haben noch keinen Reiter der unsere Licht funktionen hält, also legen wir am Pfeil oben Rechts nen neuen Tab an und nennen Ihn ganz kreativ "Licht". Warum dafür nen extra tab? Naja es macht es übersichtlicher und wir wollen ja auch mal sowas machen wie Auf-,Untergang, Mondlicht, Wolken Sim. ect.... Da ist es schon besser wenn wir was haben wo wir unsere Funktionen sammeln können.
Erstmal eine Funktion fürs Licht, dann eine fürs Dimmen und eine für den Mond. Wir benutzen die zwar noch nicht, aber es schadet ja nicht Sie zu haben:
Code:
void switchLight(){
if(RTC.daystamp>=Sunrise && RTC.daystamp<=Sunset && DaylightPowerState==HIGH){
DaylightPowerState=LOW;
digitalWrite(DaylightPowerPin,DaylightPowerState);
}else if((RTC.daystamp<Sunrise || RTC.daystamp>Sunset) && DaylightPowerState==LOW){
DaylightPowerState=HIGH;
digitalWrite(DaylightPowerPin,DaylightPowerState);
}
}
int PWM_Licht(float time, float Start, float Ende, float Dim_time, int Min, int Max){
return 1;
}
int MondPhase(int Year,int Month,int Day){
return 1;
}
Wie Ihr seht hab Ich die funktionen für Mond und Dimmung schon vorbereitet. Wie die genau aussehen, können wir aber erst sagen nachdem wir nen bisschen mehr in die Möglichkeiten geschaut haben. Je nachdem ob wir mit 0-10V, PWM, Current Sink oder anderm arbeiten gibt es unterschiede. Wichtig ist erstmal das es hell wird im AQ, daher wollen wir die funktion swichtLicht kurz einbauen:
Code:
if(loopTime !=int(RTC.second)){ // Das steht ja schon in unserem Code
loopTime =int(RTC.second);
switchLight();
Das war es auch schon. Gott sprach es werde Licht und Ich armer sündiger folgte seinem Wort... :lol:
Nun dann, machen wir nochmal nen bisschen weiter und geben unserem Computer ein Gesicht. Nein wir holen nicht die Filzstifte raus, Wir schliessen ein Display an. Nun welche möglichkeiten haben wir?
24" TFT :shock: ok lassen wir das... bleiben wir bei realistischem.
ein Keypad shield mit 16x2 Zeichen
ein 20x4 Zeichen Display
ein GLCD :?
Erstmal das einfache: Ein LCD mit HD44780 Controller. Die dinger gibts ab 4€ und werden alle gleich angeschlossen. Davon können wir sogar welche mit Roter, Grüner und schwarzer Beleuchtung bekommen, also schön um es an zu passen.
Dann, wie schliessen wir es an? Wer nen keypad shield hat der kann es ja einfach aufdrücken. Wer das nicht hat (wie Ich bei meinem 20x4) der nimmt sich die Pins vor:
Pin 1 => Ground
Pin 2 => 5V+ (ACHTUNG! Wenn euer display ne andere Spannung als 5V braucht müsst ihr nen Widerstand dazwischen setzen. bei mir waren es 4,2V als 3,3ohm)
Pin 3 => Kontrast über 10Kpoti anschliessen
Pin 4 => D8
Pin 5 => Ground
Pin 6 => D9
Pin 7 =>
Pin 8 =>
Pin 9 =>
Pin 10 => D3
Pin 11 => D4
Pin 12 => D5
Pin 13 => D6
Pin 14 => D7
Pin 15 => 5V+
Pin 16 => Ground
Sieht komisch aus, ist aber genau so wie mein Keypad Shield verdrahtet ist...
Dann können wir uns Jetzt einfach das LCD initialisieren und eigentlich auch benutzen.
Code:
#include "LiquidCrystal.h"
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// In Setup
lcd.begin(20, 4); // Diese Zeile anpassen für eure Displaygröße
// In loop
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
Joar Ich weis ist nen bisschen aus Hello World geklaut, soll ja auch nur zeigen das es klappt
So, jetzt ist das Essen bei mir fertig, morgen Zeig ich euch wie man alle Pins einsparrt :flirt: und dann gibts auch Bilder :thumbs: