// angenäherter Mond-Zyklus nachmoduliert, (tägliche Periode mal 28 Tage-Periode)
// der Mond hat eine 29,6 Tages-Periode, die hier auf ganze Zahlen gerundet 4 * 7 = 28 Tage ergibt
// Mit der Steuerspannung wird ein MOSFET (FQPF 5N60C) im PWM-Bereich von 140 - 183 moduliert
const int STE = 11 ; // Ausgang 11 wird als Steuerspannung PWM zwischen 140 und 183 genutzt
double TIME = 200 ; // Zeit pro Loop ( 1004651ms = 16,5min ) ; für Testzwecke 200ms
int DAY = 1 ; // Tag
int DAYN = 1; // Tag Neu
float FD = (-1/14) ; // Faktor-Day, tägliche Zu- oder Abnahme des Day-Faktors
float FDN = (-1/14); // Faktor-Day Neu
float FT = 1/43; // Faktor-Time, zeitliche Zu- oder Abnahme des Time-Faktors
float FTN = 1/43; // Faktor-Time Neu
float DF = 7/14 ; // Day-Faktor, definiert den täglichen Multiplikations-Faktor der Amplitude
float DFN = 7/14 ; // Day-Faktor Neu
float TF = 1/43 ; // Time-Faktor, definiert den Multiplikations-Faktor abhängig vom Tagesstand
float TFN = 1/43 ; // Time-Faktor Neu
float VOL = 140 ; // VOL wird aus dem Minimum (140) und dem dazu addierten Zeitwert, aus (43 * DF * TF) berechnet
void setup() {
pinMode(STE, OUTPUT); // PIN zuweisung als Ausgang
}
void loop() {
VOL = (140 + (43 * DF * TF)) ; // Steuerspannung wird berechnet
analogWrite(STE, VOL); // Steuerspannung entsprechend der Periode, von Timefaktor (TF) und Dayfaktor (DF) abhängig
delay(TIME);
if(TF <= 0,01 && DAYN == 7 ) { // Wenn Timefaktor 0 erreicht, hat er eine Tages-Periode durchlaufen. UND der 7. Tag durchlaufen wurde
FDN = FD * (-1); // Dann ändert FD das Vorzeichen, der Wechsel von Abnehmenden zu Zunehmenden Mond findet statt
}
if(TF <= 0,01 && DAYN == 21 ) {
FDN = FD * (-1);
}
if (TF <= 0,01){ // Wenn Timefaktor 0 erreicht, hat er eine Tages-Periode durchlaufen.
DAYN = DAY + 1 ; // Dann beginnt ein neuer Tag
FTN=FT*(-1); // Dann endet die tägliche abnehmende Mondphase und der Mond (=Amplitude) nimmt durch den positiven Faktor-Time wieder zu
DFN = DF + FDN ; // Dann wird zum alten Day-Faktor der neue Faktor-Day addiert und als neuer Day-Faktor gespeichert
}
else if(TF >= 1) { // Wenn Timefaktor 1 erreicht, ist das Tagespeak erreicht
FTN = FT * (-1); // Dann wird das Vorzeichen des Faktor-Time umgekehrt, damit der Time-Faktor wieder schrittweise zu sinken beginnt
}
if(TF <= 0,01 && DAYN == 28 ) {
DAY = 1; // Mit Tag 28 wurde etwa eine Mond-Periode durchlaufen und der Zyklus kann erneut beginnen
DAYN = DAY;
}
TFN = TF + FT; // Dem Time-Faktor wird am Ende jedes Loops ein Faktor-Time dazuaddiert. Faktor-Time kann negativ oder positiv sein, je nachdem, ob die Amplitude Abnehmend oder Zunehmend ist
DAY = DAYN; // Der Tag wird mit dem neuen Tag gleichgesetzt
TF = TFN;
FT = FTN;
DF = DFN;
FD = FDN;
}