Answer the question
In order to leave comments, you need to log in
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; //и передаем значение переменной, что свет выключен
}
}
}
#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(); // принимаем следующую команду
}
}
Answer the question
In order to leave comments, you need to log in
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 questionAsk a Question
731 491 924 answers to any question