Visto che le regole, (anche se non le condivido sempre!) ci sono, e quindi il mio topic è stato rimosso perchè conteneva cose pericolosissime... propongo solo se qualcuno mi riesce a spiegare queste poche righe di codice e se vanno insrite in un punto specifico di uno progetto , perchè ho notato che in base ha dove inserisco questo codice fornito dal costruttore dello shield mi rallenta il funzionamento di tutto il progetto:
int AC_LOAD = 3; // Output to Opto Triac pin
int dimming = 128; // Dimming level (0-128) 0 = ON, 128 = OFF
void setup()
{
pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output
attachInterrupt(0, zero_crosss_int, RISING); // Choose the zero cross interrupt # from the table above
}
// the interrupt function must take no parameters and return nothing
void zero_crosss_int() // function to be fired at the zero crossing to dim the light
{
// Firing angle calculation : 1 full 50Hz wave =1/50=20ms
// Every zerocrossing thus: (50Hz)-> 10ms (1/2 Cycle) For 60Hz => 8.33ms (10.000/120)
// 10ms=10000us
// (10000us - 10us) / 128 = 75 (Approx) For 60Hz =>65
int dimtime = (75*dimming); // For 60Hz =>65
delayMicroseconds(dimtime); // Off cycle
digitalWrite(AC_LOAD, HIGH); // triac firing
delayMicroseconds(10); // triac On propogation delay (for 60Hz use 8.33)
digitalWrite(AC_LOAD, LOW); // triac Off
}
void loop() {
for (int i=5; i <= 120; i++){ // We use 120 as the lowest and 5 as the highest brightness setting. May be adjusted depending on the lamp used.
dimming=i;
delay(20);
}
for (int i=120; i >= 5; i--){ // Same as above
dimming=i;
delay(20);