Думаю так.
PHP код:
#include <avr/delay.h>   
int AC_pin 10;  // выход для симистора     
volatile byte dim 128;    // уровень димирования (0-128)  0 = on, 128 = 0ff     

void setup()     
{      
  
pinMode(AC_pinOUTPUT);            
  
attachInterrupt(0FrontUpRISING);  //прерывание по изменению уровня с низкого на высокий     
}     
// Функция обработки прерывания на подъем       
void FrontUp()       
{     
  
detachInterrupt(0);     
  
_delay_us(1000+(65*dim));  // отсекаем лишнее  
  
digitalWrite(AC_pinHIGH);  // включить симистор     
  
_delay_us(100);      // короткая пауза, чтобы обеспечить включение симистора     
  
digitalWrite(AC_pinLOW);   // выключение симистора(он выключится когда полупериод достигнет нуля)      
  
attachInterrupt(0FrontDownFALLING);       
}       
// Функция обработки прерывания на спад      
void FrontDown()       
{      
  
detachInterrupt(0);
  
attachInterrupt(0FrontUpRISING);       
}     

void loop()     
{   
dim=64
 
// if(dim > 0) {dim--; _delay_ms(50);} else dim=128;  // пример уменьшения яркости лампы