Скетч управления с ИК пульта. Проблема

Sinister
Offline
Зарегистрирован: 14.06.2012

 Зравствуйте.
Подключил ИК сенсор из комплекта IR Kit For Arduino к DFRduino RoMeo.
Залил скетч. При нажатии на ИК пульте кнопки POWER, должен зажеться светодиод подключеный к 13-му пину. При нажатии любой другой кнопки светодиод не должен загораться. У меня же зажигается и гасится с любого пульта. Подскажите в чём может быть причина.

 

#include <IRremote.h>
#include <IRremoteInt.h>

int Pwr=13; // LED
int valPWR=0;
int state=1;

//IR Receiver Module Pin and variable
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{

pinMode(Pwr,OUTPUT); // Вывод Pwr выход

digitalWrite(Pwr,LOW); // При старте записать нольв Pwr

irrecv.enableIRIn(); //Старт ИК-приёмника
}

void loop()
{

if(irrecv.decode(&results)) // Декодирование принятого сигнала по ИК
{

if(results.value==0xFD00FF); // Код кнопки POWER
{
digitalWrite(valPWR,HIGH); // Если пришёл код кнопки POWER, то valPWR в единицу
}
if(valPWR==LOW) {
state=1-state;
}
if(state==1){ // Если state=1, то
digitalWrite(Pwr,HIGH); // Пин Pwr в единицу
}else{ // Иначе
digitalWrite(Pwr,LOW); // Пин Pwr в ноль
}
delay(500); // Задержка перед приёмом следующего кода по ИК

irrecv.resume();

delay(50);
}

}

Alexander
Offline
Зарегистрирован: 25.04.2010
maksim
Offline
Зарегистрирован: 12.02.2012

Вот в этом куске причина:

 if(results.value==0xFD00FF); // Код кнопки POWER
    {
      digitalWrite(valPWR,HIGH); // Если пришёл код кнопки POWER, то valPWR в единицу
    }
    if(valPWR==LOW) {
      state=1-state;
    }

 Зачем после круглых скобок стоит ; ?

Для чего вот это действие digitalWrite(valPWR,HIGH); нужно?

И для чего вообще переменная valPWR?

maksim
Offline
Зарегистрирован: 12.02.2012
#include <IRremote.h>
#include <IRremoteInt.h>

int Pwr = 13; // LED
boolean state = 0;

//IR Receiver Module Pin and variable
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup(){
  pinMode(Pwr, OUTPUT); // Вывод Pwr выход
  irrecv.enableIRIn(); //Старт ИК-приёмника
}

void loop(){
  if(irrecv.decode(&results)){ // Декодирование принятого сигнала по ИК  
    if(results.value == 0xFD00FF){ // Код кнопки POWER    
      state = !state; 
    }
    digitalWrite(Pwr, state); // Пин Pwr 
    delay(500); // Задержка перед приёмом следующего кода по ИК
    irrecv.resume();
    delay(50); 
  }
}