Hallo,
ich habe mir für mein Aquarium eine High Power LED Beleuchtung mit dimmbaren Konstantstromquellen gebaut. Mit Potis funktioniert das dimmen bis jetzt super und sieht echt klasse aus ![]()
Mit dem Automatikbetrieb habe ich allerdings noch Probleme... Ich habe dafür eine Formel die mir einen Wert zwischen 0-255 ausgibt, mir dem ich die Treiber dimmen kann.
Hier ein Beispielcode:
#include <DS1307RTC.h> //Echtzeituhr Bibliothek
#include <Time.h> //Zeit Bibliothek
#include <Wire.h>
//Weiß---------------------------------------------------------------------------------------
int Driver_W1 = 2; //LED Treiber PWM-Eingang
int Driver_W2 = 3; //LED Treiber PWM-Eingang
int Driver_W3 = 4; //LED Treiber PWM-Eingang
int H_Weiss = 0; //Helligkeit (0-255)
//Blau---------------------------------------------------------------------------------------
int Driver_B = 5; //LED Treiber PWM-Eingang
int H_Blau = 0; //Helligkeit (0-255)
//UV-----------------------------------------------------------------------------------------
int Driver_UV = 6; //LED Treiber PWM-Eingang
int H_UV = 0; //Helligkeit (0-255)
//Rot----------------------------------------------------------------------------------------
int Driver_R = 7; //LED Treiber PWM-Eingang
int H_Rot = 0; //Helligkeit (0-255)
//Zeiten-------------------------------------------------------------------------------------
int Zstart = 0; //Dimmzeiten
int Zjetzt = 0;
int Zende = 0;
void setup()
{
Serial.begin(9600); //Seriellen Monito starten
pinMode(Driver_W1, OUTPUT); //Definiere Variablen als Ausgänge
pinMode(Driver_W2, OUTPUT);
pinMode(Driver_W3, OUTPUT);
pinMode(Driver_B, OUTPUT);
pinMode(Driver_UV, OUTPUT);
pinMode(Driver_R, OUTPUT);
}
void loop() {
//Automatik----------------------------------------------------------------------------------
//Formel: ((Helligkeit_Ende-Helligkeit_Start)/((Zeit_Ende-Zeit_Start)/(Zeit_Jetzt-Zeit_Start)))+Helligkeit_Start = Helligkeit_Jetzt
//10Uhr - 11Uhr
if(hour() > 9 && hour() < 11)
{
Zstart = 10 * 60;
Zjetzt = (hour() * 60) + minute();
Zende = 11 * 60;
H_Weiss = ((255-0)/((Zende - Zstart)/(Zjetzt - Zstart)))+0;
H_Blau = ((255-0)/((Zende - Zstart)/(Zjetzt - Zstart)))+0;
H_UV = ((200-0)/((Zende - Zstart)/(Zjetzt - Zstart)))+0;
H_Rot = ((255-0)/((Zende - Zstart)/(Zjetzt - Zstart)))+0;
}
analogWrite(Driver_W1, H_Weiss); //PWM-Eingang LED Driver ansteuern
analogWrite(Driver_W2, H_Weiss);
analogWrite(Driver_W3, H_Weiss);
analogWrite(Driver_B, H_Blau);
analogWrite(Driver_UV, H_UV);
analogWrite(Driver_R, H_Rot);
Die Formel sollte korrekt sein, ich glaube dass die Formate in der Formel nicht stimmen... Hat jemand eine Idee? Das ist mein erstes größeres Projekt, also kann es sein dass ich irgendwelche Anfängerfehler eingebaut habe :o wäre über jede Hilfe dankbar ![]()
PS: Ich weiß dass ich die LEDs so nicht linear dimmen kann ![]()