V
V
Vitaly2016-04-08 13:53:14
Arduino
Vitaly, 2016-04-08 13:53:14

How to make a smooth turn on of the LED strip from the IR receiver?

Dear, welcome.
I dug in here in programming one sketch for Arduino, in general, there is a working sketch that turns on the LED lamp smoothly using a PIR sensor:

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

There is also a simple sketch that turns on / off the LED according to the given button on the remote control:
#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup() {
  irrecv.enableIRIn(); // запускаем прием
}

void loop() {
  if ( irrecv.decode( &results )) { // если данные пришли
    switch ( results.value ) {
    case 0xE0E0E01F:
        digitalWrite( 13, HIGH );
        break;
    case 0xE0E0D02F:
        digitalWrite( 13, LOW );
        break;
    }   
    irrecv.resume(); // принимаем следующую команду
  }
}

There was a need to make a smooth on / off LED strip with a remote control. As I understand it, I need to replace the LED turn-on command with a smooth load, I would be grateful for the help with the guys' code. I think such an operating time will be useful to many, then I'll post the schematic.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexander Volkov, 2016-04-08
@ilimlife

Yes, you can just combine the code of the first and second sketch

#include <IRremote.h>
#define fadePin 3

int RECV_PIN = 11;
int light;
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup() {
  irrecv.enableIRIn(); // запускаем прием
  pinMode(fadePin, OUTPUT);
  light = 0;
}

void loop() 
{
  if ( irrecv.decode( &results )) 
  { // если данные пришли
    switch ( results.value ) 
    {
      case 0xE0E0E01F:
      {
        if(light == 0)   //и если свет не был включен
        {
        for(int i=0; i<=150; i++)  //то плавно включаем свет
          {
            analogWrite(fadePin, i);
            delay(10);   //каждые 10мс увелияение на 1
          }
        light = 1; //и передаем значение переменной, что свет включен
        }
      }
      break;
      case 0xE0E0D02F:
      {
        if(light == 1) //если свет включен
        {
          for(int i=150; i>=0; i--)//плавно гасим его
          {
            analogWrite(fadePin, i);
            delay(10);
          }
          light = 0; //и передаем значение переменной, что свет выключен
        }
      }
      break;
    }   
  irrecv.resume(); // принимаем следующую команду
  }
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question