array verbesserung

An Deiner Stelle würde ich erst einmal die Formeln aufräumen, also aus

PWMchannel[pinCount][hour] + ((3600000 - (3600000 - ((mins * 60000) + (sec * 1000)))) / (3600000 / (PWMchannel[pinCount][hour+1] - PWMchannel[pinCount][hour])));

zunächst

PWMchannel[pinCount][hour] + (mins * 60000 + sec * 1000) / (3600000 / (PWMchannel[pinCount][hour+1] - PWMchannel[pinCount][hour])));

Dann sieht man schon klarer was los ist. Deine Zwischenergebnisse sind viel zu groß. Der Punkt ist, daß nicht nur der Typ der Ergebnisvariable auseichen muß sondern auch der für die Zwischenergebnisse. Du hast vermutlich nur die Ergebnisse auf long gesetzt. Damit die Zwischenergebnisse auch noch hinkommen muss aber auch dort alles reinpassen.

Also

PWMchannel[pinCount][hour] + ((long)mins * 60000L + (long)sec * 1000L) / (3600000L / (PWMchannel[pinCount][hour+1] - PWMchannel[pinCount][hour])));

Wenn das auch nicht hilft, dann nimm zur Not floats, aber eigentlich sollte das nicht nötig sein.