Arduino 230v Light bulb dimming
I'd start to debug by attempting to switch the load on and off a few times in the setup to ensure the TRIAC is firing, for example:

void setup()
{
  pinMode(AC_LOAD, OUTPUT);       // Set the AC Load as output
  for (int i=0; i &lt; 10; i++)
  {
      digitalWrite(AC_LOAD, HIGH);   // triac firing
      delay(1000);
      digitalWrite(AC_LOAD, LOW);    // triac Off
      delay(1000);
  }
}


The MOC3021SM Datasheet shows that 15mA may be required to drive the LED. At 3.3V as shown in the schematic R5 the 470R resistor would limit the current to 7mA and at 5V it would still only be 10mA and that's ignoring the forward voltage drop.

You can use a normal LED resistor calculation to determine the resistance, it looks like about 1.15V forward voltage drop for that part at room temperature so 120 ohms at 3.3V would be more appropriate to give a bit above 15mA. The following are the recommendations regarding LED current from the datasheet:


  All devices are guaranteed to trigger at an IF value less than or equal
  to max IFT. Therefore, recommended operating IF lies between max IFT
  (30mA for MOC3020M, 15mA for MOC3010M and MOC3021M, 10mA for MOC3011M
  andMOC3022M, 5mA for MOC3012M and MOC3023M) and absolute max IF(60mA)


If that works OK next step may be to test the zero-crossing detection works at least once, maybe using the following and seeing if it turns on after 10 seconds:

void setup()
{
  pinMode(AC_LOAD, OUTPUT);       // Set the AC Load as output
  digitalWrite(AC_LOAD, LOW);     // triac Off
  delay(10000);
  attachInterrupt(0, zero_crosss_int, RISING);  // Choose the zero cross interrupt # from the table above
}


void zero_crosss_int()  // function to be fired at the zero crossing to dim the light
{
    digitalWrite(AC_LOAD, HIGH);   // triac firing
}


If that doesn't work maybe remove U1 the optocoupler (if in a socket?) and see if the above works if you short the output between the emitter and collector (carefully!) on U1 together to pull the input down to ground. It may be you have a general interrupt configuration problem depending on which pin it's connected to, which you should add to the question, but that will help isolate a software versus hardware problem.