Arduino kontrollerade ljus dimmer (5 / 15 steg)
Steg 5: Arduino kontrollerade Lightdimmer: programvara II
Jag hittade en annan bit av programvara som gör att styra lampan via serieporten. Det utlöser i fallande utkanten av signalen noll-korsning, så timing är lite annorlunda.
Jag har inte testat det själv ännu, men jag se skäl varför det inte borde fungera: såvitt jag kan se det inte få det nummer som anges på den seriella porten men får de ASCII-värde för varje siffra som skrivs, så en '0' kommer att ses som 48
int AC_pin = 3; //Pin till OptoTriac
byte dim = 0; Ursprunglig ljusstyrkan från 0 till 255, ändra som du vill!
void setup() {
Serial.BEGIN(9600);
pinMode (AC_pin, OUTPUT);
attachInterrupt (0, ljus, faller); //When arduino stift 2 är FALLING från hög till låg, köra lätt procedur!
}
void light() {
om (Serial.available()) {
Dim = Serial.read();
om (dim < 1) {
Göra TRIAC helt av om dim är 0
digitalWrite (AC_pin, låg);
}
om (dunkel > 254) {//Turn TRIAC helt på om dim är 255
digitalWrite (AC_pin, hög);
}
}
om (dim > 0 & & dim < 255) {
Mörkläggning del, om dim är inte 0 och inte 255
delayMicroseconds(34*(255-dim));
digitalWrite (AC_pin, hög);
delayMicroseconds(500);
digitalWrite (AC_pin, låg);
}
}
void loop() {
}
Bara en notering: ovanstående programvaran är inte min. Jag tycker det är bättre att hålla kontrollen av den seriella porten av avbrottet. Också 500uS fördröjning innan TRIAC slås OFF är kanske lite lång.
Ännu mer programvara här