о5 светодиодная лента

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем ffffff, 13 авг 2018.

  1. ffffff

    ffffff Нерд

    Доброго времени суток . Вопрос про светодиодную ленту , ардуино нано 168 на китайском чипе и силовой ключ на транзисторе IRF520 http://roboshop.spb.ru/modules/IRF520-module.
    Залил найденный на просторах интернета скетч который при обнаружении датчиком движения плавно включает светодиодную ленту. Питание у меня осуществляется от 12 в блока на 2 А .
    Проблема возникает в том что лента не загорается , загорается светодиод на силовом ключе сигнализирующий о том что подается питание через него а вот дальше ничего.
    Проверял отдельно датчик движения (работает). Ленту запитывал отдельно от блока (работает)
    Так же вопрос ,можно ли подключать ардуину и ленту от одного источника (вроде как можно 7-12 но не выше ) может в этом проблема?.
    Помогите добрым советом. Как быть
    Данный проект реализуется для подсветки шкафа , хочу 2 м ленту порезать на 3- 4 части и соеденить последовательно.

    Сам код

    Код (C++):
    #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; //и передаем значение переменной, что свет выключен
         }
       }
    }
     

    Вложения:

  2. Daniil

    Daniil Гуру

    parovoZZ нравится это.
  3. ffffff

    ffffff Нерд

    немного не так нарисовал схему
    Заработало , но есть одно но лентазагорается и тухнет (постепенно) примерно за 4 сек.
    Проблема в скетче ?
     
  4. Daniil

    Daniil Гуру

    засеките за сколько у вас выполняется цикл от 0 до 150.
    Причем, любопытно, что, светодиод загорается явно не при нуле, а позже.