phasenanschnittsteuerung mit solid state relais?

Mit einem simplen analogRead() kriegst Du in etwa eine Sampling-Rate von 8kHz hin. Die machst Du Dir aber mit den delay()s gleich wieder kaputt. Mit diesen drückst Du die Sampling-Rate auf ca. 120Hz runter, was bei einer 50Hz Netzfrequenz nicht mehr wirklich zufriedenstellend ist. Wenn Du das mit Festhalten der Maxima-Zeit und schalten nach einer gewissen Zeit (nicht mit delay(), sondern mit millis()-Differenzbildung) ausprogrammierst, wirst Du schon einigen Erfolg haben.
Ich würde wahrscheinlich eine Strategie wählen, die auf einer Einschwingung auf die Netzfrequenz basiert. Diese wird vom Betreiber ziemlich konstant bei 50Hz gehalten (weshalb viele Wecker sich nur darüber synchronisieren). Wenn Du also mal relativ genau den Peak der Sinus-Schwingung herausgefunden hast, könntest Du für eine Weile einfach davon ausgehen, dass die Schwingung konstant mit 50Hz weiterschwingt und entsprechend Deine Ausgänge schalten. Von Zeit zu Zeit müsstest Du diesen internen Takt einfach wieder mit der Netzfrequenz synchronisieren, damit Abweichungen ausgeglichen werden. Wenn Du jetzt einen Timer so programmierst, dass ein Interrupt-Handler von Dir alle 100us aufgerufen wird, kannst schon sehr fein dimmen, auch auf 12 Kanälen.