Дверь из эпоксидки с умной подсветкой

sms

✩✩✩✩✩✩✩
27 Авг 2023
3
0
Доброе Всем воскресное утро! Сразу извиняюсь за то что не изучил язык программирования😞 Нужна помощь с кодом последовательностью включения адресной светодиодной лентой. Перелопатил интернет, но ни чего не нашёл.
Требуется: При срабатывании датчика приближения, по двери пойдет плавное заполнение адресной ленты синим цветом, при достижении конца ленты, она остается в залитом состоянии с медленной пульсацией всей ленты. Далее через 15-20 секунд выключается, ждать следующий сигнал от датчика приближения.
На данный момент добился только заполнения ленты цветом и постоянное свечение (не выключается). Без датчика пока, только при включении питания ардуины.
Используется Arduino NANO, лента 2812, датчик приближения из набора GyverKit.
Сроков нет, нужно разобраться, дверь еще не залита эпоксидкой.
Пока только вот такой код (и то методом научного тыка):

Библиотека microLED:
#define STRIP_PIN 3     // пин ленты
#define NUMLEDS 120      // кол-во светодиодов

#define COLOR_DEBTH 3
#include <microLED.h>   // подключаем библу
microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2818, ORDER_GRB, CLI_AVER> strip;

void setup() {
  strip.setBrightness(255);
}

void loop() { 
 
  filler();       // плавное заполнение
    
  strip.show();   // вывод
  delay(15);      // 30 кадров в секунду
 
}

void filler() {
  static int counter = 0;
  strip.clear(); 
  counter++;
  if (counter >= NUMLEDS) counter = 119; 
  strip.fill(0, counter, mBlue);
  }
 

sms

✩✩✩✩✩✩✩
27 Авг 2023
3
0
@Эдуард Анисимов, спасибо за совет.
Значит лента будет в нише для возможности заменить. Но проект должен существовать. Буду использовать все практические советы.
 

vortigont

★★★★★★✩
24 Апр 2020
1,022
542
Saint-Petersburg, Russia
возмите вот эту библиотеку. С ней будет намного проще реализовать задачи, связанные с временными интервалами. Там есть куча примеров использования под различные задачи.
 
Изменено:

Сотнег

★★★★★★★
15 Янв 2020
4,407
1,509
C-like:
void loop() {
  if (fillFlag)
   if (filledFlag)
    pulse(); 
   else
    filler();       // плавное заполнение
  else
   fillFlag = checkSensor();
   
  if (fillFlag) strip.show();   // вывод
  delay(15);      // 30 кадров в секунду

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

sms

✩✩✩✩✩✩✩
27 Авг 2023
3
0
@Сотнег, Благодарю за помощь.
Как я написал выше, у меня нет знаний программирования. После использования вашего кода, я еще сильнее запутался(((
Могу ли я Вас попросить описать функции? И нужно ли подставлять значения в них?
Спасибо еще раз.

P.S. Знаю что нуб, но обратиться не к кому...