Т.е. получается я от этого своего 5CH DIMMER к контроллеру потяну шлейф из 4-х контактов: SDA SCL ZC GND. ZC придет на ногу контроллера , на которой будет висеть прерывание для функции zcDetectISR()в результате надо 5 пинов на вывод и 1 пин на ввод на пин ESP
Питание в модуль диммеров притяну отдельным кабелем от отдельного БП.
Контакты PWM[1..5] будут уже управляться через расширитель, внутри блока димеров.
Т.е. функция zcDetectISR() будет выглядеть как-то так:
Код:
void zcDetectISR() {
if (zcState == 0) {
zcState = 1;
if (curBrightness1 < 255 && curBrightness1 > 0) {
digitalWrite(pwmPin1, 0);
int dimDelay1 = 30 * (255 - curBrightness) ;
hw_timer_arm(dimDelay1);
}
if (curBrightness2 < 255 && curBrightness2 > 0) {
digitalWrite(pwmPin2, 0);
int dimDelay2 = 30 * (255 - curBrightness2) ;
hw_timer_arm(dimDelay2);
}
.....
}
}
Со сдвиговыми регистрами поразбираюсь, пока эксперементировать не на чем, надо заказывать.