Arduino Due - проблемы с библиотекой IRremote.

Vadim111
Offline
Зарегистрирован: 14.01.2015

Суть проблемы в следующем: Если я беру стандартный пример из библиотеки IRremote по отсылке команд (привожу его код ниже) и заливаю его в Arduino Uno, то все работает без проблем - диод на 3-м пине мигает с какой-то своей частотой. (мигание ИК диода можно видеть через объектив обычной бытовой видеокамеры, но можно подключить обычный светодиод и наблюдать мигание визуально). Если этот же пример скетча я заливаю в Arduino Due, то никакой диод на 3-м пине не мигает. Проверял работоспособность самого пина - залил скетч обычного мигания светодиода. Все работает. Т.е. сам пин рабочий и диод подключен правильно.

В чем может быть проблема? Может быть для Due этот пин надо вначале как-то активировать?

Пример скетча из примеров библиотеки IRremote:

#include <IRremote2.h>
IRsend irsend;
void setup()
{
  Serial.begin(9600);
}
void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa90, 12); // Sony TV power code
      delay(40);
    }
  }
}

Еще несколько уточнений. Когда я работал с UNO, то я считал все необходимые мне коды и посылал их на аппаратуру. Все работало отлично. Когда попробовал работать с Due, то первая проблема, с которой я столкнулся, это то, что при использовании стандартной библиотеки IRremote при компиляции скетча IDE вообще зависала. Искал решение, нашел библиотеку, предназначенную, в том числе, и для работы с Due:

https://github.com/enternoescape/Arduino-IRremote-Due

С ней скетч компилируется. Проверил эту библиотеку на UNO. Все работает. Но на DUE - никак.

Помогите советом, в чем может быть проблема.

 

Tigor
Offline
Зарегистрирован: 20.07.2015

Привет.

На 13 пине поищи сигнал:)

Tigor
Offline
Зарегистрирован: 20.07.2015
// Arduino Mega
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  //#define IR_USE_TIMER1   // tx = pin 11
  #define IR_USE_TIMER2     // tx = pin 9
  //#define IR_USE_TIMER3   // tx = pin 5
  //#define IR_USE_TIMER4   // tx = pin 6
  //#define IR_USE_TIMER5   // tx = pin 46


// Teensy 1.0
#elif defined(__AVR_AT90USB162__)
  #define IR_USE_TIMER1     // tx = pin 17


// Teensy 2.0
#elif defined(__AVR_ATmega32U4__)
  //#define IR_USE_TIMER1   // tx = pin 14
  //#define IR_USE_TIMER3   // tx = pin 9
  #define IR_USE_TIMER4_HS  // tx = pin 10


// Teensy++ 1.0 & 2.0
#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
  //#define IR_USE_TIMER1   // tx = pin 25
  #define IR_USE_TIMER2     // tx = pin 1
  //#define IR_USE_TIMER3   // tx = pin 16


// Sanguino
#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)
  //#define IR_USE_TIMER1   // tx = pin 13
  #define IR_USE_TIMER2     // tx = pin 14


// Atmega8
#elif defined(__AVR_ATmega8P__) || defined(__AVR_ATmega8__)
  #define IR_USE_TIMER1   // tx = pin 9


#elif defined( __AVR_ATtinyX4__ )
  #define IR_USE_TIMER1   // tx = pin 6


// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
  //#define IR_USE_TIMER1   // tx = pin 9
  #define IR_USE_TIMER2     // tx = pin 3
#endif
Tigor
Offline
Зарегистрирован: 20.07.2015

фсе нашел 

// Arduino Due
#elif defined(__SAM3X8E__) || defined(__SAM3X8H__)
  //#define IR_USE_PWM0   // tx = pin 34
  //#define IR_USE_PWM1   // tx = pin 36
  //#define IR_USE_PWM2   // tx = pin 38
  //#define IR_USE_PWM3   // tx = pin 40
  //#define IR_USE_PWM4   // tx = pin 9
  //#define IR_USE_PWM5   // tx = pin 8
  #define IR_USE_PWM6   // tx = pin 7
  //#define IR_USE_PWM7   // tx = pin 6

на 7 пине

Vadim111
Offline
Зарегистрирован: 14.01.2015

Очень благодарен! Все заработало.

И в голову не пришло бы, что сигнал надо искать на другом пине.