Действие при нажатии (смотрите формулу расчёта ниже) Rilheva

Режим работы 512 (все 4 выходных канала работают параллельно 4*W), предположительно регистр 6 (все 4 канала)

Согласно вашему первому сообщению:
Adress:
инвертирование всех выходов соответствует 3000 + 6 = 3006 => записываем в адрес 1000 Value = 12294
инвертирование всех выходов соответствует 3000 + 6 = 3006 => записываем в адрес 1001 Value = 12294
инкремент яркости сооветствует 9000 + 6 = 9006 => записываем в адрес 1020 = 36870 (в десятичном формате)
декремент яркости сооветствует a000 + 6 = a006 => записываем в адрес 1021 = 40966 (в десятичном формате)

Проверил, всё работает! Спасибо за помощь!

по аналогии можно продолжить эту таблицу для отдельных каналов.

Adress:
инвертирование выхода 1 по кнопке 1 соответствует 3000 + 0 = 3000 => записываем в адрес 1000 Value = 12288
инвертирование выхода 2 по кнопке 2 соответствует 3000 + 1 = 3001 => записываем в адрес 1001 Value = 12289
инвертирование выхода 3 по кнопке 3 соответствует 3000 + 2 = 3002 => записываем в адрес 1002 Value = 12290
инвертирование выхода 4 по кнопке 4 соответствует 3000 + 3 = 3003 => записываем в адрес 1003 Value = 12291
инкремент яркости кнопка 1 долгое нажатие канал 1 сооветствует 9000 + 0 = 9000 => записываем в адрес 1020 = 36864
декремент яркости кнопка 1 долгое нажатие канал 1 сооветствует a000 + 0 = a000 => записываем в адрес 1020 = 40960

основная проблема была в отсутствии информации по режимам работы. То что есть в описании программы rilheva никуда не годится.
Попробую перевести для тех кто использует программу которую вы советуете как основную для винды:

Настройка действий для нажатий

Для настройки действий для типа нажатия нужно в соответствующий регистр записать число, составленное по следующему правилу:

0000 0000 0000 0000

Старшие 4 бита - тип действия:

  • 0 - нет действия*
  • 0b0001 - установить coil регистр в 0* Здесь указана цифра в двоичном коде, в данном случае 1 в hex
  • 0b0010 - установить coil регистр в 1* Здесь 2
  • 0b0011 - переключить coil регистр 0 ↔ 1* тут 3
  • 0b0100 - установить все coil регистры в 0 (выключить все каналы). Доступно начиная с прошивки 3.3.0* тут 4
  • 0b1001 - увеличить значение в holding регистре (увеличивается на 1 за каждое событие от кнопки)* тут 9
  • 0b1010 - уменьшить значение в holding регистре (уменьшается на 1 за каждое событие от кнопки)* тут “a”
  • 0b1011 - уменьшить/увеличить значение в holding регистре. Направление меняется при каждом новом нажатии.* тут “b”

остальные 3 цифры принимаем 0. Вот и получается, что для увеличения яркости нам надо взять шестнадцатеричное число 9000 и прибавить к нему номер регистра который надо увеличить. Для первого канала это 0, то есть имеем 9000. Затем для того чтобы программа поняла что мы от неё хотим надо полученное число перевести в десятичную систему и вставить нужную цифру туда.
Очень заморочено, и я полностью согласен с Андреем, что использовать консольную утилиту гораздо удобнее. Но это подходит только тем у кого стоит линух.
Если не сложно, прошу добавить это описание в вашу вики для программы rilheva. Будет понятнее.

2 лайка