Попробовал другой вариант с применением SoftPWM.h
Частота шима низкая, но мерцаний нет.
PHP код:
#include <SoftPWM.h>
uint8_t leds[12] = {30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52};
byte volatile color[12];
unsigned long night=0;
void setup()
{
Serial.begin(115200);
SoftPWMBegin();
for (int i = 0; i < 12; i++)
SoftPWMSet(leds[i], 0);
SoftPWMSetFadeTime(ALL, 5, 5);
}
void loop()
{
if (Serial.available() > 12)
{
if (Serial.read() == 255)
{
for (int i = 0; i < 12; i++)
{
color[i] = Serial.read();
}
night=0;
}
}
else
{
if(night>30000) { night=0; for (byte i = 0; i < 12; i++) color[i] = 0;}
night++;
}
for (int i = 0; i < 12; i++)
SoftPWMSet(leds[i], color[i]);
}