Еще один доработанный скетч от mySensors
на этот раз
ШИМ димер
В оригинальном, одноканальном, скетче написано "This sketch is extensible to support more than one MOSFET/PWM dimmer per circuit."
На мой взгляд скалирование (увеличение каналов) в нем производится не очень удобно
Вот и дописал его дополнив структурой каналов
Код: Выделить всё
// Структура сенсоров
typedef struct {
int ledPin; // PWM Порт
int currLvl; // текущий уровень
MyMessage dimmerMsg;
MyMessage lightMsg;
} dSensor;
dSensor registers[3] = {
{3, 0, {0, V_DIMMER}, {0, V_LIGHT}},
{5, 0, {1, V_DIMMER}, {1, V_LIGHT}},
{6, 0, {2, V_DIMMER}, {2, V_LIGHT}},
};
Теперь достаточно добавить в массив структуры необходимое количество PWM (ШИМ) портов
Единственное ограничение - эти самые ШИМ порты
у ATMEGA 328 их всего 6 (3, 5, 6, 9, 10, 11) причем 9-11 заняты радиомодулем
![Sad :(](./images/smilies/icon_e_sad.gif)
ну да иладно - не все порты нам нужны с димерами
в конце концом можно выставить 3 димируемых вывода и 4 просто включение выключение
например так
Код: Выделить всё
dSensor registers[7] = {
{3, 0, {0, V_DIMMER}, {0, V_LIGHT}}, // PWM
{5, 0, {1, V_DIMMER}, {1, V_LIGHT}}, // PWM
{6, 0, {2, V_DIMMER}, {2, V_LIGHT}}, // PWM
{2, 0, {3, V_DIMMER}, {3, V_LIGHT}}, // on/off
{4, 0, {4, V_DIMMER}, {4, V_LIGHT}}, // on/off
{7, 0, {5, V_DIMMER}, {5, V_LIGHT}}, // on/off
{8, 0, {6, V_DIMMER}, {6, V_LIGHT}}, // on/off
};
PS% Зато в MEGA портов ШИМ целых 15 шт
Пробуем и комментируем
PSS: И еще в дополнение, по работе я часто сталкиваюсь с PWM димированием. И мы часто используем PWM усилители производства SunRich
в частности 4х канальные на
5 Ампер и на
8 Ампер, Усилители поддерживают работу с диодами на 12/24/36 вольт, что очень удобно при выборе ленты
В результате я ставлю на каждый управляющий вывод ардуины по оптопаре PC817 (
по 2 руб аз шт) и управляю таким 4х канальным усилителем
Например 8 ампер на 24в это 192 вата на канал - аж 30 метров ленты 4.8 вата на канал (или 120 метров одноцветной на 4х канала) при учете 25% запаса прочности