ИК пульт

YaSerg
Offline
Зарегистрирован: 02.03.2017

Всем привет.

Имую дома телевизор и приставку. В итоге два пульта. Хочу что бы пульт от телека упралял приставкой.

Взял пробный скетч IrRecvDemo и считал коды кнопок

/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}

Далее немного доработал код, что бы одна кнопка включала светодиод вторая выключала, но к сожалению после выполнения условия включения или отключения светодиода, программа перестаёт выполнятся и коды  монитор порта не выводятся. Подскажите где я накосячил.

/*
 * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

IRsend irsend;

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

int LED = 8;

void setup()
{
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
  
}

void loop() {


  
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    
        if (results.value == 0x20DF06F9) //код моей кнопки на обычном пульте "2FD807F".
        {
        irsend.sendNEC(0x77E1C09E, 32); // код кнопки меню от приставки
        digitalWrite(LED, HIGH);
        Serial.println("LED ON");
        }

        if (results.value == 0x20DF43BC) //код моей кнопки на обычном пульте "2FD807F".
        {
        irsend.sendNEC(0x77E13A9E, 32); // код кнопки выбор от приставки
        digitalWrite(LED, LOW);
        Serial.println("LED OFF");
        }
      
    irrecv.resume(); // Receive the next value
    
  }
  
  delay(100);
}

И сразу возникает вопрос, к Arduono UNO ик-светодиод подключать напрямую или через резистор?

Прошу прощения за возможно дилетанские вопросы. Это мой первый скетч.

YaSerg
Offline
Зарегистрирован: 02.03.2017

Закоментировал строки 

irsend.sendNEC(0x77E13A9E, 32); // код кнопки выбор от приставки

и скетч начал работать без зависания.

Подскажите, ИК светодиод длинной ного подключил к 3 пину, короткой к земле эти действия верны?

YaSerg
Offline
Зарегистрирован: 02.03.2017

Сделал ещё одну проверку с камерой от телефона, при выполнении условия ИК светодиод моргает и на этом программа виснет. В монитор порта ничего не выдаётся. Светодиод не реагирует.

Ivan_grozniy_2004
Offline
Зарегистрирован: 16.04.2017

написал такую программу:

 

IRsend irsend;
void setup()
{
for (int i = 0; i < 3; i++) {
irsend.sendNEС(0x1000C, 20);
delay(40);
}
void loop() {
}

пишет что ошибка: stray '\321' in program  и выделяет

строчку irsend.sendNEС(0x1000C, 20); подскажите что исправить.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Ошибку надо копировать и вставлять в сообщение полностью, а не вручную частично переписывать.

Убедитесь, что в скобках латинская буква С, а не кириллическая С.