....Active=1,2,3,4MajorMadness":3dh7ir34 schrieb:light_channels[0].Active=1; // Kanal wird bei dimmung berücksichtigt
void setLight(){
Tlc.clear();
for( int i=0;i < 16; i++){
if(light_channels[i].Aktive==1){
int c_PWM = PWM_Licht(float RTC.daystamp, light_channels[i].Sunrise, light_channels[i].Sunset, light_channels[i].Dim_in, light_channels[i].Dim_out, light_channels[i].Min, light_channels[i].Max);
Tlc.set(i, c_PWM);
}
}
Tlc.update();
if(light_channels[16].Aktive==1){
int c_PWM = PWM_Licht(float RTC.daystamp, light_channels[i].Sunrise, light_channels[i].Sunset, light_channels[i].Dim_in, light_channels[i].Dim_out, light_channels[i].Min, light_channels[i].Max);
analogWrite(DIM1, Value);
}
if(light_channels[17].Aktive==1){
int c_PWM = PWM_Licht(float RTC.daystamp, light_channels[i].Sunrise, light_channels[i].Sunset, light_channels[i].Dim_in, light_channels[i].Dim_out, light_channels[i].Min, light_channels[i].Max);
analogWrite(DIM2, Value);
}
if(light_channels[18].Aktive==1){
int c_PWM = PWM_Licht(float RTC.daystamp, light_channels[i].Sunrise, light_channels[i].Sunset, light_channels[i].Dim_in, light_channels[i].Dim_out, light_channels[i].Min, light_channels[i].Max);
analogWrite(DIM3, Value);
}
if(light_channels[19].Aktive==1){
int c_PWM = PWM_Licht(float RTC.daystamp, light_channels[i].Sunrise, light_channels[i].Sunset, light_channels[i].Dim_in, light_channels[i].Dim_out, light_channels[i].Min, light_channels[i].Max);
analogWrite(DIM4, Value);
}
}
Erklärbar":2mkp4va8 schrieb:Wir haben hier eine kleine Funktion ohne Rückgabewert, wer vergessen hat was das ist, der muss leider nochmal auf den ersten Seiten lesen. Aber was macht diese Funktion?
Nun zuerst löscht sie Sachen die wir beim Dimmen nicht mehr brauchen. Dafür steht .clear(); Nun können wir alles neu machen. Also schaut die Funktion einmal ob Sie überhaubt was einstellen muss. Das macht sie indem sie schaut ob der Kanal aktive sein soll. Mit 1 oder 0 können wir auf ja/nein prüfen. Wenn Aktive 1 ist, dann wollen wir das der Kanal automatisch geregelt wird. Also schauen wie hell es eigentlich sein muss? Auch das machen wir wieder mit einer Funktion, diesmal aber eine mit Rückgabe Wert:
int PWM_Licht(float time, float Start, float Ende, int Dim_in, int Dim_out, int Min, int Max){
***** Hier rechnen wir dann nen bisschen rum
return pwm;
}
Das was die Funktion zurück gibt ist ein Wert zwischen 0 und 255 oder 4095. So hell muss es jetzt sein. Nun setzen wir den Richtigen Kanal (dieser versteckt sich hinter i ) auf diesen Wert und machen mit dem nächsten weiter. Am Ende müssen wir unserem Chip noch mitteilen das er das jetzt übernehmen soll. Dafür rufen wir das Update auf.
Danach machen wir das alles nochmal, aber für die Arduino PWM Kanäle, auf dehnen wir 0-10V haben. Da wir hier Feste Pins mit Namen haben, müssen wir das leider einzeln aufrufen und dann den Wert auch einzeln schreiben.
Das wars.![]()
Nicht wirklich. Ich habs jetzt "von Werk aus" so gelöst das alle einzeln dimmbar sind. Wer also nur den TLC5940 hat oder nur 10V Dimmung der muss das andere löschen.oophaga":h2sc9doz schrieb:....Active=1,2,3,4
ist jetzt schätz ich mal nicht progrichtig geschrieben, aber vom prinzip?
will man 10V und tlc oder 10V getrennt dimmen -> code kopieren, anpassen?
typedef struct {
boolean Active;
float Sunrise; //34200; // 9:30
float Sunset; //77400; //21:30
int Min; // Inverse Schaltung! 4095 = off
int Max; // Wir wollen ja nicht übertreiben, daher LED's nicht voll ausfahren
int Dim_in;
int Dim_out;
}LIGHT;
LIGHT light_channels[20] = {
{ 1, get_ts(10,0,0), get_ts(20,0,0),4080, 2000, 30, 45},
{ 1, get_ts(10,30,0), get_ts(19,0,0),4080, 2000, 60, 120},
{ 0, get_ts(10,0,0), get_ts(20,0,0),4080, 2000, 30, 45},
{ 0, get_ts(10,0,0), get_ts(20,0,0),4080, 2000, 30, 45},
/*Das ganze 16 mal, dann 4 mal für 10V Dimmung*/
{ 1, get_ts(10,0,0), get_ts(20,0,0),10, 255, 30, 45},
};
Ich kopiere mal ne PN hierhin, falls wer ähnliche Fragen hat müsste es so einfacher sein. :bier:axeld":xlwmbtkz schrieb:Es wäre prima wenn man auf den Comp von unterwegs zugreifen könnte (iPad und iPhone, Android) und die Werte angezeigt bekommt. Eventl. könnte man noch eine IP-Kamera in die Benutzeroberfläche einbinden damit man im Urlaub das auslaufende Aquarium beobachten kann ;-)
MajorMadness":165tlsze schrieb:
- Licht
- Wettersimulation
- Wolken Ein/Aus
- Mond Ein/Aus
- Konfiguration
- TLC Kanäle 0-16
- 10V Kanäle 0-4
- TLC Kanel 0
- An Zeit
- Aus Zeit
- Eindimmen Länge
- Ausdimmen Länge
- Min Wert
- Max Wert
- TLC Kanel 1
- An Zeit
- Aus Zeit
- Eindimmen Länge
- Ausdimmen Länge
- Min Wert
- Max Wert
- TLC Kanel 2
- An Zeit
- Aus Zeit
- Eindimmen Länge
- Ausdimmen Länge
- Min Wert
- Max Wert
- TLC Kanel 3
- An Zeit
- Aus Zeit
- Eindimmen Länge
- Ausdimmen Länge
- Min Wert
- Max Wert
- usw
- 10V Kanel 1
- An Zeit
- Aus Zeit
- Eindimmen Länge
- Ausdimmen Länge
- Min Wert
- Max Wert
- 10V Kanel 2
- An Zeit
- Aus Zeit
- Eindimmen Länge
- Ausdimmen Länge
- Min Wert
- Max Wert
- 10V Kanel 3
- An Zeit
- Aus Zeit
- Eindimmen Länge
- Ausdimmen Länge
- Min Wert
- Max Wert
- 10V Kanel 4
- An Zeit
- Aus Zeit
- Eindimmen Länge
- Ausdimmen Länge
- Min Wert
- Max Wert
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen