Почему не работает код

SuperTesto
Offline
Зарегистрирован: 10.06.2016

Хочу чтобы при нажатии на кнопки пульта менялся звук на пьезоэлементе, но код почему-то не работает (ошибка компиляции).  Библиотеку скачал отсюда https://new.vk.com/doc-71369845_323721844

#include <IRremote.h>

int RECV_PIN = 6; //вход ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
int p = 5;

void setup()

{
Serial.begin(9600);
irrecv.enableIRIn(); // включить приемник
pinMode(p, OUTPUT);
}

void loop() {

if (irrecv.decode(&results))
{
  Serial.println( results.value, HEX );
  if (results.value == 0x4FBC03F || results.value == 0x753DBD10) 
  {
  tone(p, 500);
  delay(2000);
  noTone(p);
  }
    if (results.value == 0x4FB827D || results.value == 0x2B345643)
    {
      tone(p, 1000);
      delay(2000);
      noTone(p);
    }
 irrecv.resume();
}
}

 

SuperTesto
Offline
Зарегистрирован: 10.06.2016

Если нужно могу скинуть код ошибки, но он какой-то длинный и непонятный (для меня).

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

SuperTesto пишет:

Если нужно могу скинуть код ошибки, но он какой-то длинный и непонятный (для меня).

не нужно - у нас есть хрустальный шар.

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

Хрустальный шар вчера сломался, а телепаты ушли в отпуск.

SuperTesto
Offline
Зарегистрирован: 10.06.2016

Клапауций 232 пишет:

SuperTesto пишет:

Если нужно могу скинуть код ошибки, но он какой-то длинный и непонятный (для меня).

не нужно - у нас есть хрустальный шар.

Ну держите:
 

C:\Users\HOME\AppData\Local\Temp\build36799823ec5e4262316071d2a8d5cc3d.tmp/core\core.a(Tone.cpp.o): In function `__vector_7':
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Tone.cpp:539: multiple definition of `__vector_7'
 
libraries\IRremote\IRremote.cpp.o:C:\Program Files (x86)\Arduino\libraries\IRremote/IRremote.cpp:312: first defined here
 
collect2.exe: error: ld returned 1 exit status
 
Несколько библиотек найдено для "IRremote.h"
 Используется: C:\Program Files (x86)\Arduino\libraries\IRremote
Не используется: C:\Program Files (x86)\Arduino\libraries\RobotIRremote
exit status 1
Ошибка компиляции для платы Arduino/Genuino Uno.
 
Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Похоже, что IRremote и Tone используют один и тот же таймер (точнее вектор прерывания TIMER2_COMPA_vect), поэтому вместе работать они не будут. Ну и одна библиотека IRremote лишняя.

vde69
Offline
Зарегистрирован: 10.01.2016

в файле C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.h не определен объект __vector_7

скорее всего или версия IDD не та или какая-то библиотека еще нужна для той...

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

vde69 пишет:

в файле C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.h не определен объект __vector_7

Вообще-то наоборот - определён в обоих файлах. Там же multiple definition. Только __vector_7 спрятано где-то в хедерах ардуиновского ядра, а в указанных местах я нашёл двойное определение TIMER2_COMPA_vect.

Но это так, на мой дилетансткий взгляд. Если что, профи меня поправят.

SuperTesto
Offline
Зарегистрирован: 10.06.2016

Jeka_M пишет:

Похоже, что IRremote и Tone используют один и тот же таймер (точнее вектор прерывания TIMER2_COMPA_vect), поэтому вместе работать они не будут. Ну и одна библиотека IRremote лишняя.

И что делать? 

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

SuperTesto пишет:

И что делать? 

Разбираться с исходниками IRremote и Tone. С таймерами, которые они используют. Смотреть, есть ли возможность использования разных таймеров. Короче, сложно это. 

SuperTesto
Offline
Зарегистрирован: 10.06.2016

Jeka_M пишет:

SuperTesto пишет:

И что делать? 

Разбираться с исходниками IRremote и Tone. С таймерами, которые они используют. Смотреть, есть ли возможность использования разных таймеров. Короче, сложно это. 

Ну блин... Вроде такое простое действие, а такие сложности, ладно, не получилось так не получилось.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

SuperTesto пишет:

И что делать? 

не таскать из вконтакта гавно, а использовать нормальные библиотеки - там у тебя модифицированная под TIMER2 IRremote

SuperTesto
Offline
Зарегистрирован: 10.06.2016

Клапауций 232 пишет:

SuperTesto пишет:

И что делать? 

не таскать из вконтакта гавно, а использовать нормальные библиотеки - там у тебя модифицированная под TIMER2 IRremote

Ну можешь тогда нормальную скинуть пожалуйста? Я уже 3 или 4 библиотки попробовал, везде одно и тоже.