ESP, IoT Гирлянда GyverTwink. Задания на доработку проекта

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
30
1
Всех с НГ! А есть умельцы, кто запилит эфекты под эту прошивку? По принципу лампы.
 
Изменено:

Wladlex

★✩✩✩✩✩✩
25 Янв 2020
32
12
53
Пожалуйста кто-нибудь добавьте эффектов. Вертикальный полны, бегущие огни и ДР.
 

Wladlex

★✩✩✩✩✩✩
25 Янв 2020
32
12
53
@Бармалей31,я сам написал что нужно добавить ДР но сейчас не понимаю что я имел в виду))). Давайте добавлять! Как?
 

b-max

✩✩✩✩✩✩✩
23 Сен 2022
12
8
47
Взял на али вот такие 3 гирлянды
WS2812B-RGB-LED-Bluetooth.jpg_640x640.jpeg
по 100 светодиодов, спаял их как положено последовательно, но получил вместо одной длинной - три одинаковых коротких. Как оказалось светодиоды в них (по линии Data) подключены параллельно и порядковый номер светодиода жестко прошит в контроллере светодиода (линия Data звонится накоротко с обоих концов гирлянды), в итоге все 3 гирлянды отображают картинку из первых 100 светодиодов. Кроме того до последнего светодиода "добегает очень мало электронов", от 5В на дальнем конце остается 2,64В, яркость соответственно никакая.
Поэтому решил подключить все 3 ленты к трем разным пинам, питание подавать на каждую отдельно.
Почитав здесь, понял что FastLED заложена возможность один массив раскидывать на несколько пинов.
Программист из меня слабый, но я попробовал
GyverTwink_v1.2.ino:
// ================ НАСТРОЙКИ ================
#define BTN_PIN D1      // пин кнопки
#define BTN_TOUCH 0     // 1 - сенсорная кнопка, 0 - нет

#define LED_PIN1 D2      // пин ленты 1
#define LED_PIN2 D3      // пин ленты 2
#define LED_PIN3 D4      // пин ленты 3
#define LED_TYPE WS2812B // чип ленты
#define LED_ORDER RGB    // порядок цветов ленты
#define NUM_STRIPS 3     // количество лент
#define NUM_LEDS_PER_STRIP 100  ..количество светодиодов в ленте
#define LED_MAX NUM_LEDS_PER_STRIP * NUM_STRIPS     // макс. светодиодов

// имя точки в режиме AP
#define GT_AP_SSID "GyverTwink"
#define GT_AP_PASS "12345678"
#define DEBUG_SERIAL_GT   // раскомментируй, чтобы включить отладку

// ================== LIBS ==================
startup.ino:
void startStrip() {
  strip = &FastLED.addLeds<LED_TYPE, LED_PIN1, LED_ORDER>(leds,0*NUM_LEDS_PER_STRIP, NUM_LEDS_PER_STRIP).setCorrection(TypicalLEDStrip);
  FastLED.addLeds<LED_TYPE, LED_PIN2, LED_ORDER>(leds,1*NUM_LEDS_PER_STRIP, NUM_LEDS_PER_STRIP).setCorrection(TypicalLEDStrip);
  FastLED.addLeds<LED_TYPE, LED_PIN3, LED_ORDER>(leds,2*NUM_LEDS_PER_STRIP, NUM_LEDS_PER_STRIP).setCorrection(TypicalLEDStrip);
  strip->setLeds(leds, LED_MAX);
  strip->clearLedData();
  // выводим ргб
  leds[0] = CRGB::Red;
  leds[1] = CRGB::Green;
  leds[2] = CRGB::Blue;
  strip->showLeds(50);
}
погонял красный огонек, бегает по всем тремста светодиодам
C++:
for(int i = 0; i < LED_MAX; i++) {
    leds[i] = CRGB::Red;
    FastLED.show();
    leds[i] = CRGB::Black;
    delay(100);
  }
но опыта работы с указателями у меня нет, в итоге работает только одна гирлянда, &FastLED.addLeds адрес которой присваиваю strip. Пните пожалуйста в нужную сторону...
 
Изменено:

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
30
1
@b-max, Доброго дня. Я так понимаю что с этой лентой не выйдет сделать сетку на окно? А то купил и уже какой день мучаюсь с ней. Хотя в отзывах пишут что обрезая и подпаяваясь собирают и делают.
 
Изменено:

b-max

✩✩✩✩✩✩✩
23 Сен 2022
12
8
47
Избыточное цитирование, см. Правила. Отредактируй или сообщение будет удалено
@b-max, @Dimas2013,
Зачем вам указатели?
Это кусок прошивки Giver, зачем он использовал указатели, не знаю, и если это убирать надо перелопачивать всю прошивку, у него вся работа проводится со strip
 
Изменено:

b-max

✩✩✩✩✩✩✩
23 Сен 2022
12
8
47
@Dimas2013, доработал прошивку выложил сюда. Теперь можно прицепить каждую ленту к отдельному пину
 
Изменено:

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
30
1
@b-max, Благодарю. А есть возможность вместо матрицы ее подключить спрошивками от ламп? Опыта в програмировании прочти нету.
 

b-max

✩✩✩✩✩✩✩
23 Сен 2022
12
8
47
@Dimas2013, по сцылке ничего не скачивается. Но для примера, скачайте вот это на нем покажу.
В этой прошивке вывод делается с помощью FastLED.show() и я так думаю, что на других прошивках этих ламп так же сделано, поэтому исправлять много не потребуется.
Теперь о корректировке:
Поиском (Ctrl-F с галкой "Искать во всех вкладках") ищем "FastLED.addLeds"
В той прошивке, что я указал найдутся эти строки
C++:
// ЛЕНТА/МАТРИЦА
  FastLED.addLeds<WS2812B, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS)/*.setCorrection(TypicalLEDStrip)*/;
  //FastLED.addLeds<WS2812B, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(0xFFB0F0); // по предложению @kostyamat добавлена такая цветокоррекция "теперь можно получить практически чистый желтый цвет" и получилось плохо
  FastLED.setBrightness(BRIGHTNESS);
Теперь о об FastLED.addLeds. параметрах
WS2812B - котроллер который вы используете, в Вашем случае ничего не меняем
LED_PIN - это вход к которому подключен DATA провод от ленты (для Wemos это D1-D8)
COLOR_ORDER - это в каком порядке выводятся цвета для светодиода, в Вашем случае это "RGB"
leds - не трогаем.
NUM_LEDS - количество светодиодов в ленте

Так вот для двух лент, строку FastLED.aadLeds надо прописать два раза (для трех-три и т.д), но добавив еще один параметр (между leds и NUM_LEDS), это смещение номера первого светодиода на физической ленте в "виртуальной" длинной ленте
Допустим вы подключили две ленты (фото которых я выкладывал) по 100 светодиодов к пинам D1 и D5 (лента подключенная к D5 продолжает ленту D1), тогда вместо
C++:
FastLED.addLeds<WS2812B, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
надо записать следующее
C++:
FastLED.addLeds<WS2812B, D1, RGB>(leds,0,100);
FastLED.addLeds<WS2812B, D5, RGB>(leds,100,100);
ВСЕ! Остальное сделает прошивка, поскольку в прошивке используется вывод в ленты FasLED.show() - он выполнит всю работу сам (какой светодиод в какой ленте)
PS
NUM_LEDS соответственно не может быть меньше, чем сумма количеств светодиодов в ленте
 
Изменено:
  • Лойс +1
Реакции: Сотнег и Dimas2013

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
30
1
@b-max, Все работает на всех прошивках. А сколько максимум отрезков можно подключить к lolin 8266? И можно ли увеличить к примеру до 20 отрезков ? Просто у китов сейчас продается гирлянды за 4400, гирлянды из 20 отрезков и видно, что они отдельнами лентами. По виду все однотипные, но разными способами спаяны, что на елку, что на окно.
 
Изменено:

Sevan

✩✩✩✩✩✩✩
4 Ноя 2018
1
0
Здравствуйте, а кто-нибудь может в прошивку управление реле добавить? Просто, чтобы включать-выключать с кнопки или из приложения со всей гирляндой. Чтобы можно было другой не программируемой гирляндой управлять.
 

RaptorLIfe

✩✩✩✩✩✩✩
17 Дек 2020
4
0
Здравствуйте,
а есть умные люди, которые могут изменить прошивку гирлянды так, чтобы она управлялась с 3х кнопок (а не как сейчас одной):
1. смена избранного режима;
2. увеличить яркость;
3. уменьшить яркость.
Просто хочу чтобы дети могли ей управлять, а управление "зажми-нажми-подержи" одной кнопкой не совсем удобное.
Готов даже угостить угостить пивом доброго человека, кто сможет доработать прошивку;)
 

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
30
1
@b-max, на данной ленте сделал матрицу на окно и на елку. Все получилось. Но матрица вышла на 196 диодов,14х14. Так как скорее всего максимально они прошиты до 200. Куски по 14 диодов идут сверху вниз, тип подключения зигзаг, 1 сигнальный провод с одного контакта на все 14 лент. На окне и елке даже лучше монтировать, так как все провода и сигнал и питание идут сверху.
 
Изменено:

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
30
1
Народ, нормальная это лента. Сделал ги на ёлку и на окно с неё, и главное все соединения сверху спаял, нет больше змеек.

А последняя пришла, точ такая же по форме, но уже нормальная, ту что можно резать.
 

R2ATR

✩✩✩✩✩✩✩
21 Мар 2024
3
6
Уважаемые друзья. Есть предложение создать инициативную группу и допилить проект эффектами. Во 2-й версии гирлянды были вспышки, мерцания. В twinkly много вертикальных эффектов и не только. Можем создать отдельную тему по добавлению эффектов и делиться. Как раз до 2025 г. есть время сделать подборку и, если автор не против, выпустить новые прошивку и .apk.
 

shalim

★✩✩✩✩✩✩
12 Ноя 2022
85
26
@R2ATR, а если бы еще люди с прямыми руками помогли пробросить ее в Home assistant - вообще огонь получилось бы.(y)