ARDUINO RGB контроллер. Обсуждение проекта

SAn4Es_TV

✩✩✩✩✩✩✩
22 Сен 2019
7
1
Можете написать ответы на вопросы?:
1. Какую частоту ШИМ ставить?
2.Можно ли использовать РГБ светодиод?
3.Можно без белого?
 

NikitaM

✩✩✩✩✩✩✩
26 Окт 2019
1
0
Помогите с проблемой.Нужно было использование только ик приемника для ленты. Собрал все настроил

C++:
// ================ НАСТРОЙКИ ================
// ------ Схема ------
#define WIRING_VERSION 1    // тип схемы. 0 - обычная, 1 - печатная плата
// настройка меняет только пины подключения

// ------ Дисплей ------
#define USE_OLED 0          // 0 - использовать дисплей, 0 - нет
#define LCD_BACKL 1         // автоотключение подсветки дисплея (1 - разрешить)
#define BACKL_TOUT 60       // таймаут неактивности отключения дисплея, секунды
#define CONTRAST 150        // контрастность (яркость) дисплея 0-255
#define ROTATE_DISP 1       // 0 или 1 - повернуть дисплей на 180 градусов
#define I2C_ADDRESS 0x3C    // адрес дисплея
// примерно на 200 строке можно поменять шрифт дисплея

// ------ Драйвер ------
#define HIGH_FREQUENCY 2    // 0 - 490 Гц, 1 - 7.8 кГц, 2 - 31.4 кГц, 3 - ручная настройка
#define PWM_FREQUENCY 15000 // частота ШИМ на настройке №3, Герц
#define DRIVER_DIRECTION 0  // 0 - обычный (мосфеты), 1 - реверс (LED amplifier)

// ------ Лента ------
#define MAX_CURRENT 0       // макс. ток в мА, при значении 0 фича не активируется
#define NUM_LEDS 60         // кол-во светодиодов для расчёта ограничения тока (только для диодов 5050!!!)
#define SMOOTH_K 0.25       // коэффициент плавности огня

// ------ Bluetooth ------
#define USE_BT 0            // 1 - использовать Bluetooth, 0 - нет

// ------ ИК пульт ------
#define USE_IR 1            // 1 - использовать ИК пульт, 0 - нет
#define IR_STEP 10          // шаг изменения настроек с пульта

// ------ Энкодер ------
#define USE_ENC 0           // 1 - использовать энкодер, 0 - нет
#define ENC_REVERSE 0       // 1 - инвертировать направление энкодера
#define ENC_TYPE 1          // 0 или 1 - тип энкодера

// ------ Кнопка -------
#define USE_BTN 0           // 1 - использовать кнопку, 0 - нет
#define BTN_MODE 1          // режим работы кнопки: 0 - переключение пресетов, 1 - переключение цветов

// ------ Напряжение ------
#define VOLTMETER 0         // 0 или 1 - вкл/выкл вольтметр (делитель напряжения в пин А0)
#define POWER_CONTROL 1     // 1 - разрешить системе отключить ленту при напряжении ниже 9.0 Вольт
#define CHARGE_VAL 1        // вывод напряжения: 0 - в процентах, 1 - в вольтах
#define CONSTANT_BRIGHT 0   // 0 или 1 - вкл/выкл поддержание яркости при разрядке АКБ (только для диодов 5050!!!) (в схеме должен стоять делитель)
#define VREF 5.1            // напряжение на пине 5V
#define R1 10000            // точное значение 10 кОм
#define R2 4700             // точное значение 4.7 кОм

// --------- Цвет ---------
#define MIN_PWM 0           // минимальный сигнал PWM
#define GAMMA_BRIGHT 1      // гамма-коррекция яркости
#define LUT_R 1.0           // коэффициент LUT матрицы красного цвета (0.0 - 1.0)
#define LUT_G 1.0           // коэффициент LUT матрицы зелёного цвета (0.0 - 1.0)
#define LUT_B 1.0           // коэффициент LUT матрицы синего цвета (0.0 - 1.0)

// ================ ДЛЯ РАЗРАБОТЧИКОВ ================
// ----------- ПИНЫ -----------

#if (WIRING_VERSION == 0)
// пин вольтметра
#define VOLT_PIN A0

// драйвер
#define PIN_R 9
#define PIN_G 10
#define PIN_B 3
#define PIN_W 11

// энкодер
#define CLK 4
#define DT 5
#define SW 6

// ИК приёмник
#define pinIR 2

// BT
#define BT_RX 7
#define BT_TX 8

// кнопка
#define BTN 12

#else //---------------------

// пин вольтметра
#define VOLT_PIN A6

// драйвер
#define PIN_R 9
#define PIN_G 10
#define PIN_B 3
#define PIN_W 11

// энкодер
#define CLK A2
#define DT A1
#define SW A0
#define ENC_GND A3
#define ENC_VCC 13

// ИК приёмник
#define pinIR 2

// BT
#define BT_RX 4
#define BT_TX 5

// кнопка
#define BTN 12

прошил - не реагирует на пульт.Прошил утилиту IR_test.ino на пульт реагирует нормально. записал коды всех кнопок

C++:
0x4E5BA3AD

0xE51CA6AD

0xE207E1AD

0x517068AD

0x1B92DDAD

0x3AB7D62D

0x5484B6AD

0xD22353AD

0xDF3F4BAD

0x68E456AD

0xF08A26AD

0x151CD6AD

0x18319BAD

0xF39EEBAD

0x4AABDFAD

0xE25410AD

0x297C76AD

0x14CE54AD

0xAF3F1BAD

0xC089F6AD

0x38379AD
прописал в блок с кодами кнопок

C++:
  #define BUTT_UP    0x4E5BA3AD

  #define BUTT_DOWN  0xE51CA6AD

  #define BUTT_LEFT  0xE207E1AD

  #define BUTT_RIGHT 0x517068AD

  #define BUTT_OK    0x1B92DDAD

  #define BUTT_1     0x3AB7D62D

  #define BUTT_2     0x5484B6AD

  #define BUTT_3     0xD22353AD

  #define BUTT_4     0xDF3F4BAD

  #define BUTT_5     0x68E456AD

  #define BUTT_6     0xF08A26AD

  #define BUTT_7     0x151CD6AD

  #define BUTT_8     0x18319BAD

  #define BUTT_9     0xF39EEBAD

  #define BUTT_0     0x4AABDFAD

  #define BUTT_STAR  0xE25410AD

  #define BUTT_HASH  0x297C76AD
прошил но на пульт так и не реагирует.




при прошивке сыпет какие то ошибки с кодировкой но прошивает:

C++:
C:\Users\tityo\sketchbook\GyverRGB_v1.6\GyverRGB_v1.6.ino: In function 'void setup()':



C:\Users\tityo\sketchbook\GyverRGB_v1.6\GyverRGB_v1.6.ino:396:57: warning: invalid conversion from 'byte {aka unsigned char}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]



     for (byte i = 0; i < 10; i++) eeprom_write_byte(i, 0);



                                                         ^



In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h:25:0,



                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,



                 from sketch\GyverRGB_v1.6.ino.cpp:1:



c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\eeprom.h:164:6: note:   initializing argument 1 of 'void eeprom_write_byte(uint8_t*, uint8_t)'



void eeprom_write_byte (uint8_t *__p, uint8_t __value);



      ^



C:\Users\tityo\sketchbook\GyverRGB_v1.6\GyverRGB_v1.6.ino:398:29: warning: invalid conversion from 'byte {aka unsigned char}' to 'uint16_t* {aka unsigned int*}' [-fpermissive]



       eeprom_write_word(i, 0);



                             ^



In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h:25:0,



                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,



                 from sketch\GyverRGB_v1.6.ino.cpp:1:



c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\eeprom.h:169:6: note:   initializing argument 1 of 'void eeprom_write_word(uint16_t*, uint16_t)'



void eeprom_write_word (uint16_t *__p, uint16_t __value);



      ^



C:\Users\tityo\sketchbook\GyverRGB_v1.6\GyverRGB_v1.6.ino:399:48: warning: invalid conversion from 'byte {aka unsigned char}' to 'uint16_t* {aka unsigned int*}' [-fpermissive]



       if (i % 10 == 0) eeprom_write_word(i, 255);



                                                ^



In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h:25:0,



                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,



                 from sketch\GyverRGB_v1.6.ino.cpp:1:



c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\eeprom.h:169:6: note:   initializing argument 1 of 'void eeprom_write_word(uint16_t*, uint16_t)'



void eeprom_write_word (uint16_t *__p, uint16_t __value);



      ^



C:\Users\tityo\sketchbook\GyverRGB_v1.6\GyverRGB_v1.6.ino:401:37: warning: invalid conversion from 'int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]



     eeprom_write_byte(PRESET_ADDR, 0);



                                     ^



In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h:25:0,



                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,



                 from sketch\GyverRGB_v1.6.ino.cpp:1:



c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\eeprom.h:164:6: note:   initializing argument 1 of 'void eeprom_write_byte(uint8_t*, uint8_t)'



void eeprom_write_byte (uint8_t *__p, uint8_t __value);



      ^



C:\Users\tityo\sketchbook\GyverRGB_v1.6\GyverRGB_v1.6.ino:402:29: warning: invalid conversion from 'int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]



     eeprom_write_byte(201, 0);



                             ^



In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h:25:0,



                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,



                 from sketch\GyverRGB_v1.6.ino.cpp:1:



c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\eeprom.h:164:6: note:   initializing argument 1 of 'void eeprom_write_byte(uint8_t*, uint8_t)'



void eeprom_write_byte (uint8_t *__p, uint8_t __value);



      ^



C:\Users\tityo\sketchbook\GyverRGB_v1.6\GyverRGB_v1.6.ino:403:31: warning: invalid conversion from 'int' to 'uint16_t* {aka unsigned int*}' [-fpermissive]



     eeprom_write_word(202, 100);



                               ^



In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/USBAPI.h:25:0,



                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:233,



                 from sketch\GyverRGB_v1.6.ino.cpp:1:



c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\eeprom.h:169:6: note:   initializing argument 1 of 'void eeprom_write_word(uint16_t*, uint16_t)'



void eeprom_write_word (uint16_t *__p, uint16_t __value);



      ^



Скетч использует 17588 байт (54%) памяти устройства. Всего доступно 32256 байт.

Глобальные переменные используют 1045 байт (51%) динамической памяти, оставляя 1003 байт для локальных переменных. Максимум: 2048 байт.
Столкнулся с такими же ошибками. Кто-нибудь знает в чем прикол?
 

Fox87

✩✩✩✩✩✩✩
30 Окт 2019
1
0
Подскажите если вместо резисторов 100 r поставлю 125r будет работать контроллер?

Почему при подключении блютуз модуля, лента начинает мирцать? Бп не вывозит (12v2a) или модуль какие-то помехи создаёт ленте?
 
Изменено:

G_V_M__52

✩✩✩✩✩✩✩
17 Дек 2019
1
0
Добрый день!
Собрал схему, прошил ардуино, включил, дисплей загорелся. Через пару минут дисплей погас и больше не включается. Подскажите в чем может быть проблема? Сгорел?
 

Electr

✩✩✩✩✩✩✩
29 Дек 2019
1
0
Добрый день!
Собрал схему, прошил ардуино, включил, дисплей загорелся. Через пару минут дисплей погас и больше не включается. Подскажите в чем может быть проблема? Сгорел?
В скетче выбран пункт использования дисплея?
К какому пину ардуино подключен плюс питания дисплея?
 

Raman

✩✩✩✩✩✩✩
3 Янв 2020
2
0
Прошу помощи! Собираю контроллер на макетке, все точно по схеме, ардуина прошиваеться без проблем, настройки выполнены, но не работает от слова вообще. Сил моих больше нет.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,222
1,291
Москва
не бывает , что если прошивается, то не работает совсем.
в setup ставишь Serial.begin(9600);
в разные места скетча добавляешь Serial.println("Контрольная точка №");
и смотришь куда у тебя идет, а куда нет. что меняется, а что нет.
Главное помнить, что ...
 

Blazea

✩✩✩✩✩✩✩
7 Дек 2019
1
0
Собрал на irf3205pbf и кнопка. Лента не загорается, изредка моргает когда инверсию ставлю. помогите...
 

Paul1695

✩✩✩✩✩✩✩
10 Дек 2019
1
0
Добрий день, а є варіант даного проекту лиш для Wemos d1 mini?

Я с проекта по огненной лампе вставил в етот проект но верно ли я сделал не знаю, я не шарю ибо 1 раз штото делаю, посему не ругайте )
 

Вложения

Изменено:

nobody

✩✩✩✩✩✩✩
12 Янв 2020
3
0
Всем привет. Пока жду компоненты для проекта набросал основные компоненты в 3d для дальнейшего проектирования корпуса под все это дело. Может кому пригодится. Закину в формате step. На плате отсутствуют: ИК, гнездо питания и кнопка т.к. их использовать не планирую, кому надо сам добавит необходимое. Короче все проще, чем с нуля делать

PCB_03.JPG

PS может для кого-то (как и для меня) будет открытием, но мосфеты IRF3205 на эти платы не встают в связи с их шириной. Тут установлены IRLR8726PBF.
 

Вложения

boriman

✩✩✩✩✩✩✩
1 Май 2019
1
0
Подскажите пожалуйста какой маскимальной длины РГБ ленту потянет этот контроллер, и как правильно подключать длинную ленту?
 

nobody

✩✩✩✩✩✩✩
12 Янв 2020
3
0
Подскажите пожалуйста какой маскимальной длины РГБ ленту потянет этот контроллер, и как правильно подключать длинную ленту?
Тут все (длина) упирается не в "контроллер", а в питание. Если найдете откуда добыть побольше ампер, то и длину можно увеличить без проблем.

Если брать ленту из статьи — RGB 5050 с плотностью 120 диодов на метр, то у нее в описании написано что для питания необходимо 14-19 Вт на метр длины. Т.е. до 1,58 ампер на метр ленты. На 2 метра ленты 28-38 Вт (до 3,16 ампер). и.т.д. Если будет источник питания, способный выдать нужное количество ампер, то увеличивайте сколько влезет.
 

Sovi_eli_sir

✩✩✩✩✩✩✩
23 Фев 2020
20
3
Доброго времени суток. Я решил развести небольшую плату под контроллер от Alex Gyver, для RGBW света, т.к. в исходном проекте не хватало компактности. В связи с чем, возник вопрос. В данном проекте сможет ли правильно работать контроллер от внутреннего тактирования (что-то мне подсказывает, что сможет, т.к. вроде, частотозависимого в коде ничего не было)? Из того, что может показаться необычным, это лишний, пятый вывод. Он был добавлен мной, с надеждой на дальнейшие модификации кода (или, наконец-то, нормальный свой).
P.S. если у кого-то будет время и желание посмотреть схему и печатку на предмет ошибок, то заранее большое спасибо.
P.P.S. И, если, оно все-таки работает, то пользуйтесь, если кому-то надо.
https://easyeda.com/Savely/led-strip-controller_copy
 

StanislavAS

✩✩✩✩✩✩✩
7 Июл 2019
36
9
Я тоже развёл! )
частотозависимого в коде ничего не было
Вырезка со страницы пректа:
"Вывод: если контроллер не планируется использовать для видео света, то можно поставить LED amplifier и в настройках контроллера поставить низкую частоту (490 Гц), глаз такую частоту не заметит, но снятое на камеру видео будет «стробить». Если планируется использовать контроллер для создания видео света, то в обязательном порядке нужно делать свой драйвер. Также свой драйвер позволит работать с большими отрезками ленты, т.к. транзисторы можно поставить очень мощные."
На сайте arduino https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard написано, что без кварца разгоняется только до 8МГц, вместо 16 с кварцем

Получается что для нормальный работы ленты нужна частота 31.4 кГц, а контроллер без кварца держит 8МГц. Так что в теории должно.

А по поводу платы могу обратить внимание на тот момент, где сам споткнулся. Поставь резистор между HC-06 и ножкой процессора. У меня без него контроллер перезагружается. Хотя если подключать к USB компутера через ftdi такого эффекта нет. Убил на выяснение причин хренову кучу времени, а оказалось дело в bluetooth контроллере, который в какой-то момент, видимо, выдаёт высокие разряды в порт ^___^
 

Вложения

Изменено:
  • Лойс +1
Реакции: Sovi_eli_sir

Sovi_eli_sir

✩✩✩✩✩✩✩
23 Фев 2020
20
3
Большое спасибо за совет по поводу резистора! У вас много более компактно получилось. Если выводить модули на проводах, то как я понимаю, их остается только приклеить внутрь корпуса? Т.к. крепежных отверстий, к сожалению, у них не предусмотрено. Наверное переразведу под маленький корпус из ЧиД, т.к я только сейчас задумался о корпусе.
 

StanislavAS

✩✩✩✩✩✩✩
7 Июл 2019
36
9
@Sovi_eli_sir, ну у меня сильно компактней из-за того, что я повыбрасывал всё кроме bluetooth, и тот висит отдельно модулем на проводах. Изначально думал плату завернуть в термоусадку, потому как в светильнике, в который я хотел его поставить, есть места куда можно все спрятать. Но можно корпус и на 3D принтере напечатать, если контроллер будет болтаться где-то наруже.
 
  • Лойс +1
Реакции: Sovi_eli_sir

Sovi_eli_sir

✩✩✩✩✩✩✩
23 Фев 2020
20
3
3D принтер это очень хорошо, но у меня его пока нет, поэтому я хочу использовать готовый корпус. Тоже думал, все кроме блютуза выкинуть, но по личному опыту, управление с телефона быстро надоедает (один светильник над столом, через ESP и Blynk, т.е. вообще нету физических органов управления, а второй, такой-же, как собираю сейчас, только спаянный навесом на ардуине, фото второго приложил).
 

Вложения

  • Лойс +1
Реакции: StanislavAS

StanislavAS

✩✩✩✩✩✩✩
7 Июл 2019
36
9
@Sovi_eli_sir, хорошо получилось! А поповоду органов управления - тут уж от цели зависит. Если в плане интерьера, то RGB лента обычно используется где-то в труднодоступных местах (потолочные светильники, фоновые подсветки). Мне кажется было бы неплохо переделать этот проект на тот же esp32 и уже связать все с умным домом. Либо развести ethernet на плате. Вариантов масса и, самое плохое, что они приходят в голову когда ты уде в середине пути с первончальной идеей :) Вероятно, когда закончу с софтом и прошивкой, буду делать новую версию платы с разводкой под сеть. Добавлю mqtt и попробую связать с Алисой Яндекса. Тоже интересно пощупать.
 
  • Лойс +1
Реакции: AJIATbIPb и Sovi_eli_sir

Sovi_eli_sir

✩✩✩✩✩✩✩
23 Фев 2020
20
3
@StanislavAS, спасибо. О, настолько далеко (я про добавление связи через интернет) не думал, очень интересно было бы поработать (но это попозже). Мой маленький внутренний жадина, хотел выгодно нарисовать и заказать максимальное количество универсальных плат за минимальную сумму (и для фотосвета (мне на мусорке попались полупрозрачные, вроде как из полистирола трубы, в примерно полтора метра длинной и 75 мм в диаметре, неизвестного мне происхождения, но, тем не менее, хорошо подходящие, для создания корпуса), и интерьерный, и для "бесконечного" зеркала и т.д. и т.п.). Ееех, видимо под каждую задачу нужно будет разводить свою плату.
 

Sovi_eli_sir

✩✩✩✩✩✩✩
23 Фев 2020
20
3
UPD. ЭТА ПЛАТА С ОШИБКАМИ, ОНА НЕ РАБОТОСПОСОБНА.
Я тут перерисовал выложенную мной, парой дней ранее, печатку. Исправил некоторые недочеты с подключением, которые обнаружил, учел рекомендации StanislavAS, по поводу резистора. Есть у кого-нибудь еще какие замечания? У меня просто уже глаз "замылился".
https://easyeda.com/Savely/ledcontrollerfinal
1582653456038.png1582653401117.png
 
Изменено:

StanislavAS

✩✩✩✩✩✩✩
7 Июл 2019
36
9
@Sovi_eli_sir, хммм, насколько я понимаю, резистор надо не на tx порт контроллера, а на rx, так как он принимающий сигналы от BT, а tx, наоборот, передающий в сторону bluetooth. Или тут логика в обратную сторону? :p
 
Изменено:

Sovi_eli_sir

✩✩✩✩✩✩✩
23 Фев 2020
20
3
@StanislavAS, а вот это я уже узнаю на практике :oops:, т.к. очень торопился заказать платы и уже такие и отправил в pcbway.
 

StanislavAS

✩✩✩✩✩✩✩
7 Июл 2019
36
9
@Sovi_eli_sir, у вас в прошивке softwareserial используется. Если что, в настройках выводы местами поменяете. Вот я заказал первый раз плату где забыл подвести землю к микрухе :)
 

Sovi_eli_sir

✩✩✩✩✩✩✩
23 Фев 2020
20
3
@StanislavAS, Ох, точно, я и забыл, что порт софтовый. Спасибо. Удалось отменить, или так и приехала, без земли?