Ошибка компиляции для Arduino Nano

vicitacal
Offline
Зарегистрирован: 13.04.2017

 

Не компилируется при подключении библиотеки IRremote. Выдаёт ошибку: 

"Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
 
(.text+0x0): multiple definition of `__vector_7'
 
libraries\RobotIRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here
 
collect2.exe: error: ld returned 1 exit status
 
exit status 1
Ошибка компиляции для платы Arduino Nano."
 
просто при подключении библиотеки.
Jeka_M
Jeka_M аватар
Онлайн
Зарегистрирован: 06.07.2014

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

vicitacal
Offline
Зарегистрирован: 13.04.2017

Вот облом! Я убрал все tone и всё нормально работает. Но звуки мне тоже нужны. Подскажите как обойтись без tone.

Jeka_M
Jeka_M аватар
Онлайн
Зарегистрирован: 06.07.2014

Попробуйте другие библиотеки - NewTone (вроде использует другой аппаратный таймер),  TimerFreeTone (вообще не использует аппаратный таймер).

vicitacal
Offline
Зарегистрирован: 13.04.2017

Спасибо! С NewTone всё работает!

Kaston
Offline
Зарегистрирован: 13.01.2018

Помогите после включения пищалки у меня всё перестаёт работать.

Вот скетч:

#include "IRremote.h"
IRrecv irrecv(10);
decode_results results;
int led1=0;
int led2=0;
int led3=0;
int led4=0;
int led=0;
#include <TimerFreeTone.h>
 
#define TONE_PIN 9
int melody[] = { 262, 196, 196, 220, 196, 0, 247, 262 };
int duration[] = { 250, 125, 125, 250, 250, 250, 250, 250 };
 
void setup (){
  pinMode(3,OUTPUT);
  pinMode(2,OUTPUT);
pinMode(4,OUTPUT);
pinMode(9, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop() {
  if ( irrecv.decode( &results )) { 
    Serial.println(results.value, HEX);
    
if (results.value==0xFF30CF&&led1==0){
  digitalWrite( 2, HIGH );led1=1;results.value=0;
}
if (results.value==0xFF30CF&&led1==1){
  digitalWrite( 2, LOW );led1=0;results.value=0;
}   
if (results.value==0xFF18E7&&led2==0){
  digitalWrite( 3, HIGH );led2=1;results.value=0;
}
if (results.value==0xFF18E7&&led2==1){
  digitalWrite( 3, LOW );led2=0;results.value=0;
}
if (results.value==0xFF7A85&&led3==0){
  digitalWrite( 4, HIGH );led3=1;results.value=0;
}
if (results.value==0xFF7A85&&led3==1){
  digitalWrite( 4, LOW );led3=0;results.value=0;
if (results.value==0xFFA25D){
   digitalWrite( 2, HIGH );
   delay(200);
   digitalWrite( 2, LOW );
     delay(200);
        digitalWrite( 3, HIGH );
   delay(200);
   digitalWrite( 3, LOW );
     delay(200);
        digitalWrite( 4, HIGH );
   delay(200);
   digitalWrite( 4, LOW );
     delay(200);
     digitalWrite( 3, HIGH );
   delay(200);
   digitalWrite( 3, LOW );
     delay(200);
      digitalWrite( 2, HIGH );
   delay(200);
   digitalWrite( 2, LOW );
     delay(200);
}
if (results.value==0xFFC23D){
  for (int thisNote = 0; thisNote < 8; thisNote++) { 
    TimerFreeTone(TONE_PIN, melody[thisNote], duration[thisNote]); 
    delay(25);
    }
  while(1);
  results.value=0;
  }
if (results.value==0xFF6897&&led==0){
     digitalWrite( 2, HIGH );
    digitalWrite( 3, HIGH );
  digitalWrite( 4, HIGH );led=1;results.value=0;
}
if (results.value==0xFF6897&&led==1){
   digitalWrite( 2, LOW );
   digitalWrite( 3, LOW );
  digitalWrite( 4, LOW );led=0;results.value=0;
 irrecv.resume();
 }
  
}
 
Kaston
Offline
Зарегистрирован: 13.01.2018

Jeka_M пишет:

Попробуйте другие библиотеки - NewTone (вроде использует другой аппаратный таймер),  TimerFreeTone (вообще не использует аппаратный таймер).

я вижу вы не плохо разбираетесь не могли бы вы мне помочь