ик приемник

vladproard
Offline
Зарегистрирован: 01.07.2013

доврый день попытался сам написать скетч для управления arduinо через ик пульт смысл в том что при нажатии определенной кнопки ду должен сработать пин и через определенное время отключиться вот что попытался собрать из разных скетчей но срабатывает несколько раз и потом не какой реакции

#include <IRremote.h> // eto skachannaya biblioteka

int RECV_PIN = 11; //vkhod IK priyemnika
IRrecv irrecv(RECV_PIN);
decode_results results;
int a=0; // peremennaya pereklyucheniya rezhima , pri nazhatii knopki ona prinimayet znacheniye +1


void setup()
{
irrecv.enableIRIn(); // vklyuchit? priyemnik

pinMode(13, OUTPUT);

} 

void loop() {
if (irrecv.decode(&results)) {
delay(300); // zaderzhka pered vypolneniyem opredeleniya knopok , chtoby izbezhat? bystroye dvoynoye nazhatiye

if (results.value == 0x1000809) {a=a+1;} // obrabotka nazhitya klavishi , zdes? peremennaya prinimayet znacheniye +1

// nachinayem vklyuchat? svetodiody na pinakh
{
  digitalWrite(13, HIGH);   // включаем светодиод
  delay(1000);                  // ожидаем секунду
  digitalWrite(13, LOW);    // выключаем светодиод
  delay(1000);                  // ожидаем секунду
}
 // deystviye posle nazhatiya knopki , yesli peremennaya stala ravna 1 to

{ //
delay(50); //pauza mezhdu povtorami //
} //
irrecv.resume(); // 

}

}

знаю что есть темы но нечего путного не нашел помогите чем можете

 

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

Где вы все эту конструкцию a=a+1; берете для флага?

#include <IRremote.h> // eto skachannaya biblioteka

int RECV_PIN = 11; //vkhod IK priyemnika
IRrecv irrecv(RECV_PIN);
decode_results results;
boolean a = 0; // peremennaya pereklyucheniya rezhima , pri nazhatii knopki ona prinimayet znacheniye +1


void setup()
{
  irrecv.enableIRIn(); // vklyuchit? priyemnik
  pinMode(13, OUTPUT);
} 

void loop() 
{
  if (irrecv.decode(&results) && a == 0) 
  {
    if (results.value == 0x1000809)
    {
      digitalWrite(13, HIGH);   // включаем светодиод
      delay(1000);                  // ожидаем секунду
      digitalWrite(13, LOW);    // выключаем светодиод
      delay(1000);                  // ожидаем секунду
      a = 1;
    }
    delay(50); //pauza mezhdu povtorami //
    irrecv.resume(); // 
    delay(300); 
  }
  else a = 0;
}