Подключение светодиодной ленты к Ардуино

Ардуино подключение светодиодной ленты 12 Вольт

Подключение светодиодной ленты к Arduino. Рассмотрим, как подключить LED ленту через транзистор для умного освещения дома или декоративной подсветки.

Включение светодиодной ленты от Arduino производится через транзистор, так как LED лента работает от 12 Вольт, а пины Ардуино выдают напряжение только 5 Вольт. Рассмотрим, как подключить светодиодную ленту к микроконтроллеру для создания умного освещения в доме или создания декоративной подсветки. На этой странице мы разместили схемы и скетчи для подключения LED ленты с подробным описанием.

Управление светодиодной лентой 12 Вольт через Ардуино можно сделать с помощью реле или транзистора. В первом случае при включении / выключении будет слышен щелчок срабатывания магнитного реле, что многих будет раздражать. Кроме того, реле не позволит сделать эффект плавного затухания освещения. Транзистор не имеет перечисленных минусов, а конечное устройство будет более компактным.

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • источник постоянного тока 12 Вольт;
  • светодиодная лента;
  • полевые / биполярные транзисторы;
  • реле Ардуино 12 Вольт;
  • датчик движения;
  • макетная плата;
  • резисторы;
  • провода «папа-папа», «папа-мама».

Как подключить светодиодную ленту к Ардуино

Подключение светодиодной ленты к Ардуино через реле
Подключение светодиодной ленты к Ардуино через реле

На картинке мы представили первый вариант подключения светодиодной ленты к Ардуино: через реле, а полевой транзистор рассмотрим далее. Первый и второй скетч, размещенные ниже, можно применять на двух схемах. Третий пример с плавным включением / затуханием можно использовать только в схеме с транзистором. После сборки схемы загрузите следующие примеры программ в плату Arduino.

Программа для светодиодной ленты Ардуино

void setup() {
   pinMode(12, OUTPUT); // объявляем пин 12, как выход
}

void loop() {
   digitalWrite(12, HIGH);
   delay(1000);
   digitalWrite(12, LOW)
   delay(1000);
}
  1. Для зажигания LED ленты через реле можно использовать цифровой пин;
  2. Код повторяет программу для мигания светодиода на Ардуино;
  3. Для данного примера датчик движения к Ардуино можно не подключать.

Скетч для светодиодной ленты с датчиком движения

unsigned long counttime;
byte w = 1;

#define LED  12 // назначаем порт для реле
#define PIR  2    // назначаем порт для датчика

void setup() {
   pinMode(LED, OUTPUT); // объявляем пин LED, как выход
   pinMode(PIR, INPUT);      // объявляем пин PIR, как вход
   }

void loop() {
   delay(200);

   // если есть движение - включаем свет
   if (digitalRead(PIR) == HIGH) { digitalWrite(LED, HIGH); w = 1; }

   // если движения нет - включаем счетчик
   if (digitalRead(PIR) == LOW) { counttime = millis(); w = 0;

       while (w == 0) {
         delay(200);

         // если движения нет в течении 10 секунд - выключаем свет и выходим из цикла
         if (millis() - counttime > 10000) { digitalWrite(LED, LOW); w = 1; }

         // если обнаружено движение в течении 10 сек. - включаем свет и выходим из цикла
         if (digitalRead(PIR) == HIGH) { digitalWrite(LED, HIGH); w = 1; }
      }

   }
}
  1. В выражении if (millis() - counttime > 10000) можно поставить любое значение в миллисекундах, при котором свет не будет выключаться;
  2. Задержка delay(200); может влиять на скорость срабатывания датчика, но позволяет немного разгрузить процессор.

Как подключить LED ленту через транзистор

Схема подключения светодиодной ленты к Ардуино через транзистор
Схема подключения светодиодной ленты к Ардуино через транзистор

Биполярный или полевой транзистор позволяет плавно включать LED ленту и регулировать яркость освещения в доме на Ардуино. Для примера мы взяли RGB LED ленту, чтобы переключать разные цвета. Можно использовать и обычную ленту 12 Вольт. Соберите схему, как на картинке и загрузите в плату следующий пример кода. Если у вас остались вопросы — оставляйте их в комментариях к этой записи.

Скетч для плавного включения светодиодной ленты

void setup() {
   pinMode(10, OUTPUT); // объявляем пин 10, как выход
}

void loop() {
   // плавное включение
   for(int i=0; i<=255; i++) {
   analogWrite(10, i);
   delay(5); // ставим задержку для эффекта
}

   //плавное затухание
   for(int i=255; i>=0; i--) {
   analogWrite(10, i);
   delay(5); // ставим задержку для эффекта
}

}

Пояснения к коду:

  1. Используем для плавного зажигания LED ленты 10 пин с ШИМ сигналом;
  2. Для этого примера датчик движения к Ардуино можно не подключать.

Скетч для плавного включения от датчика движения

unsigned long counttime;
byte w = 1;

#define LED  10 // назначаем порт для реле
#define PIR  2    // назначаем порт для датчика

void setup() {
   pinMode(LED, OUTPUT); // объявляем пин LED, как выход
   pinMode(PIR, INPUT);      // объявляем пин PIR, как вход
   }

void loop() {
   delay(200);

   // если есть движение - плавно включаем свет и заходим в цикл while (w == 2)
   if (digitalRead(PIR) == HIGH) {

    for (int i = 0; i <= 255; i++) {
      analogWrite(LED, i);
      delay(5);
    }

    w = 2;
    while (w == 2) {
      if (digitalRead(PIR) == HIGH) {
        delay(200);

        // если движения нет - свет не выключаем, а заходим в цикл while (w == 0)
        if (digitalRead(PIR) == LOW) {
          w = 0;
        }
      }
    }
  }

    // если движения нет - включаем счетчик и заходим в цикл while
    if (digitalRead(PIR) == LOW) {
    counttime = millis(); w = 0;

    while (w == 0) {
      delay(200);

      // если движения нет в течении 10 секунд - выключаем свет и выходим из цикла
      if (millis() - counttime > 10000) {

        for (int i = 255; i >= 0; i--) {
          analogWrite(LED, i);
          delay(5);
        }
        w = 1;
      }

      // если обнаружено движение - переходим в цикл (w == 2), не выключая свет
      if (digitalRead(PIR) == HIGH) {
        w = 2;
      }
    }
  }
}
  1. В выражении if (millis() - counttime > 10000) можно поставить любое значение в миллисекундах, при котором свет не будет выключаться;
  2. Задержка delay(200); может влиять на скорость срабатывания датчика, но позволяет немного разгрузить процессор.
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *