/* * Firing setiap zero crossing. * Sekadar untuk pengujian sinkronisasi dengan ZCD. * */ const int PIN_ZCD = 2; // Pin interrupt 2 atau 3 const int PIN_GATE_TRIAC = 3; void setup() { pinMode(PIN_GATE_TRIAC, OUTPUT); digitalWrite(PIN_GATE_TRIAC, LOW); //Pengawalan interrupt attachInterrupt(digitalPinToInterrupt(PIN_ZCD), zeroCrossISR, RISING); } void loop() { // Semua pekerjaan ada di blok kode interrupt, jaga sependek mungkin. } void zeroCrossISR() { digitalWrite(PIN_GATE_TRIAC, HIGH); delayMicroseconds(1000); // Sesuaikan agar cukup waktu untuk arus bisa memicu Triac. digitalWrite(PIN_GATE_TRIAC, LOW); }