SCR gate controller circuit using arduino

...but i m having doubts whether it can be fired on the negative cycle of the rectifier.

A TRIAC (thyristor) can be triggered with a positive or negative voltage on the gate. But, I've never used an SCR. I've always used a special optoisolator designed to drive a TRIAC, such as the [u]MOC3021[/u]. You need to isolate your Arduino from the high voltage anyway, and the optoisolator allows you to trigger the TRIAC with a 5V logic pulse.

I haven't studied your code, but since you are detecting only the positive-going zero-crossing, you'll have to allow for that, and send-out another trigger pulse after a 1/2 cycle delay (10mS @ 50Hz, or 8.33mS @ 60Hz) to cover the negative half-cycle.

Plus I thought of using an external voltage as the controlling voltage to get the ADC voltage. Any other easy recommendation?

Sure! The ADC just gives you a "number"... A value that gets converted to a delay value... With the appropriate circuitry, you could adjust the brightness of a lamp based on the volume of an audio signal, or whatever. (I'm assuming this is a light dimmer?)

You don't even need to use the ADC... You can control the delay (brightness) entirely in software... About a million years ago (with a different microcontroller) I built a "sunrise dimmer" that brings-up the light level over a 10 minute period.