Hallo,
Ich versuche jetzt schon seit ein paar Tagen einen Dimmer für AC Lampen programmieren.
Ich habe auch ein paar Dimmer gefunden, die jedoch nur mit delays funktionieren, wodurch ich aber immer nur eine Lampe richtig dimmen kann.
Hab es selbst versucht ohne delays:
bool zero_cross = 0;
unsigned long zeromicros = 0;
unsigned long offmicros = 0;
int AC_LOAD = 3; // Output to Opto Triac pin
int dimming = 128;
void setup()
{
pinMode(AC_LOAD, OUTPUT);
attachInterrupt(0, zero_cross_detect, CHANGE);
}
void loop() {
int dimtime = (75*dimming);
int einschalten = micros() - zeromicros;
int ausschalten = micros() - offmicros;
if (zero_cross == 1) {
if ( einschalten >= dimtime) {
digitalWrite(AC_LOAD, HIGH);
zeromicros = 0;
offmicros = micros();
}
if (ausschalten >= 100) {
digitalWrite(AC_LOAD, LOW);
offmicros = 0;
zero_cross = 0;
}
}
dimming = 80;
}
void zero_cross_detect() { // If zero crossing is detected
zero_cross = 1;
zeromicros = micros();
}
Jedoch flackert die Lampe so nur anstatt richtig zu Dimmen.
Freue mich sehr über Hilfe.
LG