// SUHINAR
// gate triac 1 phasa potensio
//https://wokwi.com/projects/384435116573070337
#define triacPulse 10 //output menuju gate scr
#define SW 7 //tombol aktivasi gate scr, 1 = stop, 0 = aktif
int potensio=0; //nilai awal analog potensiometer
int delayGate=9800; // nilai awal gate delay dalam microsecond
void setup(){
Serial.begin(115200);
pinMode(2, INPUT); //sumber input dari zero cross detector
//digitalWrite(2, INPUT_PULLUP); // pull up, fungsi seperti switch
pinMode(triacPulse, OUTPUT);
pinMode(SW, INPUT);
digitalWrite(SW, INPUT_PULLUP);
}
void loop() {
if (!digitalRead(SW)){ // When the switch is closed, bernilai nol/ground
potensio=analogRead(A0); //cek pembacaan analog arduino 0-1023
attachInterrupt(digitalPinToInterrupt(2), gateMicros, RISING);
//attachInterrupt(0, gateMicros, RISING); // attach Interrupt at PIN2
}
else if (digitalRead(SW)){
detachInterrupt(0); // Detach Interrupt
}
}
void gateMicros() //program micro second gate triac
{
delayGate=map(potensio,0,1023,9800,1000);
delayMicroseconds(delayGate); // read AD0
Serial.print(delayGate);
Serial.println(" micro second delay pulse");
digitalWrite(triacPulse, HIGH);
Serial.println("triacpulse high");
delayMicroseconds(50); //delay 50 uSec on output pulse to turn on triac
digitalWrite(triacPulse, LOW);
Serial.println("triacpulse low");
}