Функциональный тон и IRremote - PullRequest
1 голос
/ 10 июля 2020

Пытаюсь создать программу с ИК-перекодировщиком и динамиком. Цель состоит в том, чтобы сыграть ноту, когда я касаюсь числа на пульте дистанционного управления, но у меня проблема. Я смотрел код, и проблема в звуковом сигнале функции, но я не знаю почему.

Проблема: Тон. cpp .o (символ из плагина): В функции `timer0_pin_port ':

(. Text + 0x0): множественное определение `__vector_7 '

library \ IRremote \ IRremote. cpp .o (символ из плагина) :(. Text + 0x0): first здесь определяется

collect2.exe: error: ld возвратил 1 статус выхода

статус выхода 1

#include "IRremote.h"

int pinLED = 7;
int pinIR = 11;
int speaker = 9;

IRrecv receptor (pinIR);
decode_results resultados;

//NOTES
long DO= 523.25;
long RE=587.33;
long MI=659.26;
long FA=698.46;
long SOL=783.99;
long LA=880;
long SI=987.77;
long DoS=554.37;


void decodificar(){

  switch(resultados.value){
    case 0xFFA25D: //POWER
      if (digitalRead(pinLED)==LOW){
        digitalWrite(pinLED, HIGH);
      }else{
        digitalWrite(pinLED, LOW);
      }
      break;

    if (digitalRead(pinLED)==HIGH){
       case 0xFF30CF: //Num 1
        tone (speaker, DO, 200);
        break;
      case 0xFF18E7: //Num 2
        tone (speaker, RE, 200);
        break;
      case 0xFF7A85: //Num 3
        tone (speaker, MI, 200);
        break;
      case 0xFF10EF: //Num 4
        tone (speaker, FA, 200);
        break;
      case 0xFF38C7: //Num 5
        tone (speaker, SOL), 200; 
        break;
      case 0xFF5AA5: //Num 6
        tone (speaker, LA, 200);
        break;
      case 0xFF42BD: //Num 7
        tone (speaker, SI, 200);
        break;
      case 0xFF4AB5: //Num 8
        tone (speaker, DoS, 200);
        break;
    }
   
  }
}

void setup() {
  pinMode (pinLED, OUTPUT);
  pinMode (speaker, OUTPUT);
  receptor.enableIRIn();
}

void loop() {

  if (receptor.decode(&resultados)){
    decodificar();
    receptor.resume();
  }
}

1 Ответ

0 голосов
/ 10 июля 2020

Вы можете использовать другой таймер для библиотеки IRRemote в

Arduino\libraries\IRremote\boarddefs.h

, изменив комментарии вокруг строки 190

#else
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
// ATmega48, ATmega88, ATmega168, ATmega328
    #define IR_USE_TIMER1   // tx = pin 9
    //#define IR_USE_TIMER2     // tx = pin 3

Для меня (с Nano) это как минимум устранило ошибку компоновщика. HTH

...