ИК Управление Sony. Программа в 3 строки не работает. Помогите нубу )

Тема в разделе "Проводная и беспроводная связь", создана пользователем SEsin, 7 май 2017.

  1. SEsin

    SEsin Нерд

    Доброго времени суток! Пожалуйста, подскажите в чем может быть проблема.
    Задача элементарна - включать телевизор Sony с помощью ИК светодиода на arduino uno.
    Коды с ИК пульта я считал (хотя в этом, видимо, не было необходимости, они известны для Sony). Убедился, что код включения a90. Сначала написал типа "сложную" программу - не работает. Начал разбираться, и упрощать свою программу, чтобы выявить проблему. В итоге остался вот такой скетч:

    Код (C++):
    #include <IRremote.h>
    IRsend irsend;


    void setup() {
      Serial.begin(9600);
    }

    void loop() {

      for (int i = 0; i < 3; i++)
    {
        irsend.sendSony(0xa90, 12); // Sony TV power code
        delay(1000);
    }

    }
    В интернете очень много примеров управление телевизором Sony. Но у меня не работает. ИК светодиод вроде мигает (проверяю камерой телефона). Но телевизор никак не реагирует.
    Честно, потратил весь день, все перепробовал, упростил программу до трех строк, но все равно не работает...
    Пожалуйста, подскажите в чем может быть проблема? Светодиод купил вот такой:
    https://www.chipdip.ru/product/tsal6200
    Может в нем проблема? Потому, что вроде как нечему не работать, учитывая, что я вижу через камеру телефона, что светодиод мигает.
     
    Последнее редактирование: 7 май 2017
  2. NikitOS

    NikitOS Public enemy Администратор

  3. NikitOS

    NikitOS Public enemy Администратор

    Ну так и да, коду там есть Но они не работают :(
    Код (C++):
    #include <IRremote.h>
    IRsend irsend;


    void setup() {
    Serial.begin(9600);
    }

    void loop() {

    irsend.sendSony(0xa90, 12); // Sony TV power code
    delay(1000);


    }
    кстати вы каким примером код узнавали?!?
     
  4. NikitOS

    NikitOS Public enemy Администратор

    А светодиод на каком пине...
     
  5. SEsin

    SEsin Нерд

    За оформление кода пардон, понял. )
    Код кнопки узнавал стандартным примером IRecvDump, ИК Светодиод на 3-м пине. Подключен через резистор 170 Ом.
    Я много всего прочитал вчера по форумам, понял что кондиционеры, например, сложные команды пачками посылают. Поэтому взял самый простой случай - телевизор Sony. От путьта считал ровно тот код, который везде в примерах есть. Но не работает нифига. Поэтому я и подумал, что возможно, со светодиодом какая-то проблема. Не та частота или типа того. Повторюсь, через камеру телефона я вижу, что он мигает.
    Изначально пробовал включить музыкальный центр методом irsend.sendRaw, посылал массив значений. Но не получилось, поэтому я упростил до самого тривиального варианта - телевизор Sony.
    Подозреваю, что я где-то дико туплю, ведь у всех работает...
     
  6. sys

    sys Злобный Буратино Модератор

    А если так?
    Код (C++):
    #include <IRremote.h>
    IRsend irsend;


    void setup() {
     
    }

    void loop() {

      for (int i = 0; i < 3; i++)
    {
        irsend.sendSony(0xa90, 12); // Sony TV power code
        delay(100);
    }
     delay(10000);
    }
     
  7. SEsin

    SEsin Нерд

    Блин, сработало! Спасибо большое! Т.е. правильно я понял, что проблема была в том, что после отправки надо было немного подождать? Я сразу отправлял ещё одну команду и тем самым сбивал с толку телевизор?
     
  8. sys

    sys Злобный Буратино Модератор

    код посылается трижды с задержкой 100 миллисекунд, ну и пауза в 1 секунду (10 сек это для теста)
     
    SEsin нравится это.
  9. NikitOS

    NikitOS Public enemy Администратор

    кстати а если все через setup то включится и все...
    оптим. задержка 3сек
     
    SEsin нравится это.
  10. SEsin

    SEsin Нерд

    Все сработало, класс. Спасибо за советы. Осталась одна проблема - дальность. ) В идеале я бы хотел управлять разными устройствами. Но сейчас приходится очень точно направлять ик-светодиод на устройство и дальше 2-х метров не добивает.
    Не подскажете ли ещё, может подключить несколько светодиодов через какой-нибудь транзистор или типа того? Как грамотно увеличить дельность?