duration = AC_TOGGLE_SIGNAL[i];の下にこれ追加すると
Serial.println(duration);

8972
4520
540
588
532
172
540
1712
532
596
532
1712
536
592
540
-24308

となった。

41228がintでは扱えないから負の数字になって止まるっぽい?
アドバイスに従って
int duration;を
long duration;
にしたら動いた。
intの範囲ってこんなに小さかった?
チップに寄って違うのかな?