Помогите с кодом. Поочередное и плавное влючение диодов.
- Войдите на сайт для отправки комментариев
Ср, 23/03/2016 - 14:20
День добрый! У самого туго с програмирование, помогите с кодом, кто может). Так вот, хочеться собрать схему с почередным и плавным влючением светодиодной ленты из 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; //и передаем значение переменной, что свет выключен
}
}
}

Как будут летны подключаться, через какой(ие) драйвер(а)? Или указанный код у вас с одной лентой работает и вся проблема развернуть его на пять лент?
в чем схема нарисована?
#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); } } } }Подключаться будет через обычный блокпитания на 12 в. Данный код на одну ленту для плавного включения. Да, проблема что бы разврнуть на 5 лент с поочередеым включнием.
Рисовал и тестировал вот тут https://123d.circuits.io
Спасибо за код!