ARDUINO Подсветка лестницы. Обсуждение проекта

Gen@

★★★✩✩✩✩
13 Апр 2020
129
111
200 Вт выше крыши, на деле она меньше ест.
можно перенять расчёт ограничения по току из проекта для ламп, тогда яркостью мы сможем зафиксировать максимальное потребление. Голосуйте, если это нужная фишка - добавлю в 1.3
 

Константин 271

★★★✩✩✩✩
12 Июл 2020
946
102
можно перенять расчёт ограничения по току из проекта для ламп
я давно ЗА это))
Тем более, что есть инструмент:
#define CURRENT_LIMIT 600 // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
if (CURRENT_LIMIT > 0) FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT / NUM_STRIPS);

- только для 12 В надо аналогично. Кто какую ленту ж ставит...


Даже по 30 на метр - и то 720 диодов выходит, тоже может не влезть.
Смотрим видос Алекса - microLED может и 750:
 

bort707

★★★★★★✩
21 Сен 2020
2,901
863
microLED может и 750:
это зависит от остального кода, при 750 диодах память нано занята почти полностью даже при двух байтах на диод
Главное, чтобы человек в своих расчетах понимал, что все это именно про ленту 2811, а то возьмет 2812 и будет обидно
 

Fedya

✩✩✩✩✩✩✩
29 Апр 2022
5
1
@Gen@, тоже поддерживаю идею с ограничением потребления в прошивке. Считаю очень нужная фишка, особенно для тех у кого например есть блок питания, но он ниже мощности ленты используемой в проекте.

Заказал я ленту ws2811 (60д/м) для лестницы, в том числе и для перил.
 
  • Лойс +1
Реакции: Константин 271

Darkman

✩✩✩✩✩✩✩
17 Май 2022
8
1
Подскажите пожалуйста, что если использовать 5 вольтовую ленту WS2812, работать будет?
 

lawyer1234

✩✩✩✩✩✩✩
19 Июн 2022
3
0
у меня лесница на 15 ступенек, лента ws2812b, разное количество диодов на ступеньку, всего 760 диодов.
Прошивка v1.0. работает нормально, но ступеньки зажигаюся не равномерно, ну это понятно.

Прошивка v 1.2 не запускается с 760 диодами. Прошивается номально, когда ставлю глубину на значение 2.
ставлю в суме меньше диодов, например 547 шт на меньшее количество ступенек, - ступеньки светят все сразу, на датчики движения не реагирует.

В чем может быть проблема?
и где проблему искать?
 

Константин23

✩✩✩✩✩✩✩
24 Июн 2022
3
0
Приветствую, дошли руки до своей подсветки, припаял датчик освещённости. Стало интересней, наконец ночью не слепит. А днём - ярко, но БП в защиту начал уходить. Значит, кушает больше, чем надо.

Изменил void setup:

C++:
void setup() {
  Serial.begin(9600);
  FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);
  setBrightness(curBright);    // яркость (0-255)
  clear();
  show();
- странно, эффекта нет, ток всё равно не ограничевается, хотя компилируется и записывается исправно. Лента 2811 на 12 В, ставил цифру 12 вместо 5 - ничего не поменялось. Подскажите, как правильно сделать лимит в версии 1.2?

ps строку добавил, конечно же:
#define CURRENT_LIMIT 100 // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
 

DAK

★★★✩✩✩✩
8 Окт 2020
517
137
C++:
/// Set the maximum power to be used, given in volts and milliamps.
    /// @param volts - how many volts the leds are being driven at (usually 5)
    /// @param milliamps - the maximum milliamps of power draw you want
    inline void setMaxPowerInVoltsAndMilliamps(uint8_t volts, uint32_t milliamps) { setMaxPowerInMilliWatts(volts * milliamps); }
@Константин23, А светодиоды у Вас на сколько Вольт? Такое ощущение, что не надо трогать первый параметр, он отражает напряжение светодиодов, играть надо с параметром #define CURRENT_LIMIT 100 , попробуйте сделать #define CURRENT_LIMIT 10

А если вместо
FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);

сделать
setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT);
будет компилироваться?
 

bort707

★★★★★★✩
21 Сен 2020
2,901
863
@Константин23, все решается в разы проще, без всяких настроек currentlimit. Просто подкорректируйте максимальную дневную яркость в скетче, пока БП не перестанет отваливаться.
Настройка currentlimit в Fastled - вещь исключительно декоративная, на самом деле никакой ток там не регулируется, все делается через яркость. Так зачем нам посредники в виде этой функции, проще самому яркость поправить.
 

Константин23

✩✩✩✩✩✩✩
24 Июн 2022
3
0
проще самому яркость поправить.
Нет.
Пока не было фоторезистора - я так и сделал, экспериментально подобрал яркость, при которой не потребляется больше потолка БП.
Но сейчас-то яркость - переменная. Надо ограничить только потолок, причём в амперах. Ну или вкорячивать какое-то условие куда-то, что, мол, если яркость выше такой-то, то ... но это надо знать куда и как. Если есть вполне рабочий инструмент - надо им и воспользоваться. На скетчах гайвер-ламп он прекрасно работает, адекватно вполне, я с ампер-метром проверял. Не понимаю почему тут не хочет. Поэтому и спросил тут.

попробуйте сделать #define CURRENT_LIMIT 10
Разумеется, число в миллиамперах я пробовал разное. 1000 и 100 это очень разные величины. Не работает, яркость не меняется.

будет компилироваться?
Нет. Пробовал)
Я тоже обратил внимание, что в скетче лестницы не пишется билиотека, а сразу setBrightness\clear()\show(); и т.д., в то время как в скетчах лампы - FastLED.setBrightness, FastLED.show(); и т.д. - почему? И ещё в них всегда есть строка FastLED.addLeds<WS2811, LED_PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); - в лестнице её нет. В скетчах с матрицей на 2812 - такая: FastLED.addLeds<WS2812B, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS)/.setCorrection(TypicalLEDStrip)/;
 

Gen@

★★★✩✩✩✩
13 Апр 2020
129
111
@Константин23, потому что в лестнице используется не FastLED а MicroLED библиотека
Исходники:
LEDdata stripLEDs[STRIP_LED_AMOUNT];  // буфер ленты ступенек
microLED strip(stripLEDs, STRIP_LED_AMOUNT, STRIP_PIN);  // объект лента (НЕ МАТРИЦА) из-за разного количества диодов на ступеньку!

#if (RAILING == 1)
LEDdata railingLEDs[RAILING_LED_AMOUNT];  // буфер ленты перил
microLED railing(railingLEDs, RAILING_LED_AMOUNT, RAILING_PIN);  // объект лента
#endif
 
  • Лойс +1
Реакции: Константин23

Константин23

✩✩✩✩✩✩✩
24 Июн 2022
3
0
@Gen@, процедура ограничния тока из одной библиотеки не действует на другую? Ладно, а аналог - имеется у микролед?

Параметр CUSTOM_BRIGHT - какие пределы имеет? 1..255, или другие?
 
Изменено:

Gen@

★★★✩✩✩✩
13 Апр 2020
129
111
@Константин23, вот тут есть примеры

libraries/microLED/examples/other_func/other_func.ino:
void setup() {
  strip.setBrightness(30);    // яркость (0-255)
  // яркость применяется при выводе .show() !

  strip.setVoltage(4500);     // установить напряжение питания в мв, по умолч. 5000 (для расчёта тока)
  strip.setMaxCurrent(700);   // установить максимальный ток (автокоррекция яркости). 0 - выключено
  // при .show() яркость будет скорректирована, чтобы ток не превышал установленный
}
 

Gen@

★★★✩✩✩✩
13 Апр 2020
129
111
@Константин23, значения фоторезистора мапятся на диапазон [10..200], т.е. curBright в итоге всегда будет в этом диапазоне.

firmware/LEDstairs_v1.2/LEDstairs_v1.2.ino:
void handlePhotoResistor() {
#if (AUTO_BRIGHT == 1)
  EVERY_MS(3000) {            // каждые 3 сек
    int photo = analogRead(PHOTO_PIN);
    Serial.print("Photo resistor ");
    Serial.println(photo);
    systemOffState = photo > NIGHT_PHOTO_MAX;
    curBright = systemOffState ? 0 : map(photo, 30, 800, 10, 200);
    setBrightness(curBright);
  }
#endif
}
 

bort707

★★★★★★✩
21 Сен 2020
2,901
863
значения фоторезистора мапятся на диапазон [10..200], т.е. curBright в итоге всегда будет в этом диапазоне
остается подобрать правильное значение яркости вместо 200 в этой формуле и функция setcurrenrlimit станет не нужна, о чем я и писал пару сообщений выше.
 
  • Лойс +1
Реакции: DAK

Константин 271

★★★✩✩✩✩
12 Июл 2020
946
102
остается подобрать правильное значение яркости вместо 200 в этой формуле и функция setcurrenrlimit станет не нужна
т.е. по 20 раз перешивать ардуинку, наблюдая, как БП улетает или не улетает в защиту - это проще, чем сразу ввести одну цифру 5000 для БП 5А и один раз прошить? :)

Спасибо за все варианты, каждый сделает выбор.
 

IvanGlukhov

✩✩✩✩✩✩✩
26 Июн 2022
1
0
Тут писали про то,что можно программно увеличить количество диодов на ступеньке. как это сделать ,что нужно прописать? Решения я так и не нашёл. Не хочется одинакового размера резать ленту .
 

Gen@

★★★✩✩✩✩
13 Апр 2020
129
111
@IvanGlukhov,
firmware/LEDstairs_v1.2/LEDstairs_v1.2.ino:
// описание всех ступенек с возможностью подсветки ЛЮБЫХ ступенек в ночном режиме
Step steps[STEP_AMOUNT] = {
{ 16, 0b0100100100100100 },   // первая ступенька 16 чипов, 0b0100100100100100 - каждый третий чип активен в ночном режиме
{ 16, 0b0000000000000000 },   // вторая ступенька 16 чипов, 0b0000000000000000 - не активен в ночном режиме
{ 16, 0b0000000000000000 },   // 3
{ 16, 0b0000000000000000 },   // 4
{ 16, 0b0000000000000000 },   // 5
{ 16, 0b0000000000000000 },   // 6
{ 16, 0b0000000000000000 },   // 7
{ 16, 0b0000000000000000 },   // 8
{ 16, 0b0000000000000000 },   // 9
{ 16, 0b0000000000000000 },   // 10
{ 16, 0b0000000000000000 },   // 11
{ 16, 0b0000000000000000 },   // 12
{ 16, 0b0000000000000000 },   // 13
{ 16, 0b0000000000000000 },   // 14
{ 16, 0b0000000000000000 },   // 15
{ 16, 0b0100100100100100 }    // 16
};
 

Wolfik159

✩✩✩✩✩✩✩
7 Июл 2022
6
0
Здравствуйте, я сделал тестово подстветку и она у меня хатично загорается. Хотя датчики не подключены. Прочел, а решение не нашел. Растояние проводов от датчика к уне буквально 10 см. Что делать?