Помогите с кодом. Поочередное и плавное влючение диодов.

VicB
Offline
Зарегистрирован: 23.03.2016

День добрый! У самого туго с програмирование, помогите с кодом, кто может). Так вот, хочеться собрать схему с почередным и плавным влючением светодиодной ленты из 5 отрезков. Есть 5 лент, хочеться чтоб сначала включалась плавно центральная, затем две плавно побокам от центральной, и затем две крайние, тоже плавно.  Есть вот такая схема. И нашел вот такой код плавного включения на Ютубе. Спасибо!

#define fadePin 3 //пин управления MOSFET транзистором

int pirPin = 2;  //пин подключения управляющего сигнала PIR датчика
int light;       //переменная для хранения состояния света (вкл/выкл)
void setup(){
  pinMode(pirPin, INPUT);  //настариваем 2 пин как вход для сигналов с датчика
  pinMode(fadePin, OUTPUT);// 3 пин на выход, для управления транзисотором
  light = 0;     //устанаваливаем переменную для первого включения света
}

void loop(){
   if(digitalRead(pirPin) == HIGH )  //если сигнал с датчика высокого уровня(т.е. есть движение)
   {
     if(light == 0)   //и если свет не был включен
     {
       for(int i=0; i<=150; i++)  //то плавно включаем свет
       {
       analogWrite(fadePin, i); 
       delay(10);   //каждые 10мс увелияение на 1
       } 
       light = 1; //и передаем значение переменной, что свет включен
     }
   } 
   else  //иначе
   {
     if(light == 1) //если свет включен
     {
       for(int i=150; i>=0; i--)//плавно гасим его
       {
       analogWrite(fadePin, i);
       delay(10);
       } 
       light = 0; //и передаем значение переменной, что свет выключен
     }
   }
}

okta
Offline
Зарегистрирован: 10.01.2015

Как будут летны подключаться, через какой(ие) драйвер(а)? Или указанный код у вас с одной лентой работает и вся проблема развернуть его на пять лент?

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

в чем схема нарисована?

#define LED_CH1     3 // пин управления MOSFET транзистором //3, 5, 6, 9, 10, и 11. 
#define LED_CH2     5 
#define LED_CH3     6
#define SENSOR_PIN  2 // пин подключения сигнала c PIR датчика
#define SPEED       10 // скорость изменения яркости (чем больше - тем медленнее)

void setup()
{
  pinMode(SENSOR_PIN, INPUT);  //настариваем 2 пин как вход для сигналов с датчика
  pinMode(LED_CH1, OUTPUT);    // 3 пин на выход, для управления транзисотором
  pinMode(LED_CH2, OUTPUT);
  pinMode(LED_CH3, OUTPUT);
}

void loop()
{
  if(digitalRead(LED_CH2))  //если сигнал с датчика высокого уровня(т.е. есть движение)
  {
    if(!digitalRead(LED_CH2))   //и LED2 выключен
    {
      for(int i = 0; i <= 255; i++)  //то плавно включаем 2-й канал
      {
        analogWrite(LED_CH2, i); 
        delay(SPEED);
      } 
      for(int i = 0; i <= 255; i++)  //то плавно включаем 1-й и 3-й каналы
      {
        analogWrite(LED_CH1, i);
        analogWrite(LED_CH3, i); 
        delay(SPEED);
      } 
    }
  } 
  else  //если датчик показывает "нет движения"
  {
    if(digitalRead(LED_CH2)) //если свет включен
    {
      for (int i = 255; i >= 0; i--)
      {
        analogWrite(LED_CH2, i);
        delay(SPEED);
      } 
      for (int i = 255; i >= 0; i--)
      {
        analogWrite(LED_CH1, i);
        analogWrite(LED_CH3, i);
        delay(SPEED);
      } 
    }
  }
}

 

VicB
Offline
Зарегистрирован: 23.03.2016

Подключаться будет через обычный блокпитания на 12 в. Данный код на одну ленту для плавного включения. Да, проблема что бы разврнуть на  5 лент с поочередеым включнием.

VicB
Offline
Зарегистрирован: 23.03.2016

Рисовал и тестировал вот тут https://123d.circuits.io

Спасибо за код!