在 Uno r4 wifi 上运行代码时出错,但在 Nano 上运行良好

问题描述 投票:0回答:1

我有一些代码,可以用来通过 arduino nano 和 IR LED 关闭和打开电视。效果很好。但是,我想在 uno r4 wifi 上运行它,以便可以远程控制它。当我将相同的代码上传到 uno r4 时,我收到此错误:(我将其放在一个块中,这样阅读起来就不那么糟糕了。

/*
/Users/-/Documents/Arduino/libraries/IRremote/irISR.cpp:18:5: error: expected constructor, destructor, or type conversion before '(' token
 ISR (TIMER_INTR_NAME)
     ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp: In member function 'void IRrecv::enableIRIn()':
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:105:2: error: 'cli' was not declared in this scope
  cli();
  ^~~
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:105:2: note: suggested alternative: 'cbi'
  cli();
  ^~~
  cbi
In file included from /Users/-/Documents/Arduino/libraries/IRremote/IRremote.h:24:0,
                 from /Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:1:
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:236:3: error: 'TCCR2A' was not declared in this scope
   TCCR2A = _BV(WGM21); \
   ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:236:16: error: 'WGM21' was not declared in this scope
   TCCR2A = _BV(WGM21); \
                ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:236:12: error: '_BV' was not declared in this scope
   TCCR2A = _BV(WGM21); \
            ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:236:12: note: suggested alternative: '_B'
   TCCR2A = _BV(WGM21); \
            ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:237:3: error: 'TCCR2B' was not declared in this scope
   TCCR2B = _BV(CS21); \
   ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:237:16: error: 'CS21' was not declared in this scope
   TCCR2B = _BV(CS21); \
                ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
In file included from /Users/-/Documents/Arduino/libraries/IRremote/IRremote.h:24:0,
                 from /Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:1:
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp: In member function 'void IRsend::mark(int)':
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:210:30: error: 'TCCR2A' was not declared in this scope
 #define TIMER_ENABLE_PWM    (TCCR2A |= _BV(COM2B1))
                              ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:24:2: note: in expansion of macro 'TIMER_ENABLE_PWM'
  TIMER_ENABLE_PWM; // Enable pin 3 PWM output
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:237:16: note: suggested alternative: 'CS'
   TCCR2B = _BV(CS21); \
                ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:238:3: error: 'OCR2A' was not declared in this scope
   OCR2A  = TIMER_COUNT_TOP / 8; \
   ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:239:3: error: 'TCNT2' was not declared in this scope
   TCNT2  = 0; \
   ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:210:44: error: 'COM2B1' was not declared in this scope
 #define TIMER_ENABLE_PWM    (TCCR2A |= _BV(COM2B1))
                                            ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:24:2: note: in expansion of macro 'TIMER_ENABLE_PWM'
  TIMER_ENABLE_PWM; // Enable pin 3 PWM output
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:239:3: note: suggested alternative: 'SCNx32'
   TCNT2  = 0; \
   ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:110:2: note: in expansion of macro 'TIMER_CONFIG_NORMAL'
  TIMER_CONFIG_NORMAL();
  ^~~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:212:30: error: 'TIMSK2' was not declared in this scope
 #define TIMER_ENABLE_INTR   (TIMSK2 = _BV(OCIE2A))
                              ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:113:2: note: in expansion of macro 'TIMER_ENABLE_INTR'
  TIMER_ENABLE_INTR;
  ^~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:212:43: error: 'OCIE2A' was not declared in this scope
 #define TIMER_ENABLE_INTR   (TIMSK2 = _BV(OCIE2A))
                                           ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:113:2: note: in expansion of macro 'TIMER_ENABLE_INTR'
  TIMER_ENABLE_INTR;
  ^~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:212:39: error: '_BV' was not declared in this scope
 #define TIMER_ENABLE_INTR   (TIMSK2 = _BV(OCIE2A))
                                       ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:113:2: note: in expansion of macro 'TIMER_ENABLE_INTR'
  TIMER_ENABLE_INTR;
  ^~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:210:40: error: '_BV' was not declared in this scope
 #define TIMER_ENABLE_PWM    (TCCR2A |= _BV(COM2B1))
                                        ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:24:2: note: in expansion of macro 'TIMER_ENABLE_PWM'
  TIMER_ENABLE_PWM; // Enable pin 3 PWM output
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:210:40: note: suggested alternative: '_B'
 #define TIMER_ENABLE_PWM    (TCCR2A |= _BV(COM2B1))
                                        ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:24:2: note: in expansion of macro 'TIMER_ENABLE_PWM'
  TIMER_ENABLE_PWM; // Enable pin 3 PWM output
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp: In member function 'void IRsend::space(int)':
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:211:30: error: 'TCCR2A' was not declared in this scope
 #define TIMER_DISABLE_PWM   (TCCR2A &= ~(_BV(COM2B1)))
                              ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:35:2: note: in expansion of macro 'TIMER_DISABLE_PWM'
  TIMER_DISABLE_PWM; // Disable pin 3 PWM output
  ^~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:212:39: note: suggested alternative: '_B'
 #define TIMER_ENABLE_INTR   (TIMSK2 = _BV(OCIE2A))
                                       ^
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:113:2: note: in expansion of macro 'TIMER_ENABLE_INTR'
  TIMER_ENABLE_INTR;
  ^~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:117:2: error: 'sei' was not declared in this scope
  sei();  // enable interrupts
  ^~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:211:46: error: 'COM2B1' was not declared in this scope
 #define TIMER_DISABLE_PWM   (TCCR2A &= ~(_BV(COM2B1)))
                                              ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:35:2: note: in expansion of macro 'TIMER_DISABLE_PWM'
  TIMER_DISABLE_PWM; // Disable pin 3 PWM output
  ^~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/irRecv.cpp:117:2: note: suggested alternative: 'sbi'
  sei();  // enable interrupts
  ^~~
  sbi
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:211:42: error: '_BV' was not declared in this scope
 #define TIMER_DISABLE_PWM   (TCCR2A &= ~(_BV(COM2B1)))
                                          ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:35:2: note: in expansion of macro 'TIMER_DISABLE_PWM'
  TIMER_DISABLE_PWM; // Disable pin 3 PWM output
  ^~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:211:42: note: suggested alternative: '_B'
 #define TIMER_DISABLE_PWM   (TCCR2A &= ~(_BV(COM2B1)))
                                          ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:35:2: note: in expansion of macro 'TIMER_DISABLE_PWM'
  TIMER_DISABLE_PWM; // Disable pin 3 PWM output
  ^~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp: In member function 'void IRsend::enableIROut(int)':
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:213:30: error: 'TIMSK2' was not declared in this scope
 #define TIMER_DISABLE_INTR  (TIMSK2 = 0)
                              ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:54:2: note: in expansion of macro 'TIMER_DISABLE_INTR'
  TIMER_DISABLE_INTR; //Timer2 Overflow Interrupt
  ^~~~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:218:2: error: 'TCCR2A' was not declared in this scope
  TCCR2A               = _BV(WGM20); \
  ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:218:29: error: 'WGM20' was not declared in this scope
  TCCR2A               = _BV(WGM20); \
                             ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:218:25: error: '_BV' was not declared in this scope
  TCCR2A               = _BV(WGM20); \
                         ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:218:25: note: suggested alternative: '_B'
  TCCR2A               = _BV(WGM20); \
                         ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:219:2: error: 'TCCR2B' was not declared in this scope
  TCCR2B               = _BV(WGM22) | _BV(CS20); \
  ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:219:29: error: 'WGM22' was not declared in this scope
  TCCR2B               = _BV(WGM22) | _BV(CS20); \
                             ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:219:42: error: 'CS20' was not declared in this scope
  TCCR2B               = _BV(WGM22) | _BV(CS20); \
                                          ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:219:42: note: suggested alternative: 'CS'
  TCCR2B               = _BV(WGM22) | _BV(CS20); \
                                          ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:220:2: error: 'OCR2A' was not declared in this scope
  OCR2A                = pwmval; \
  ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~
/Users/-/Documents/Arduino/libraries/IRremote/IRremoteInt.h:221:2: error: 'OCR2B' was not declared in this scope
  OCR2B                = pwmval / 3; \
  ^
/Users/-/Documents/Arduino/libraries/IRremote/irSend.cpp:64:2: note: in expansion of macro 'TIMER_CONFIG_KHZ'
  TIMER_CONFIG_KHZ(khz);
  ^~~~~~~~~~~~~~~~

exit status 1

Compilation error: exit status 1
*/

这是我上传的代码:

#include <IRremote.h>

int LED = 13;
IRsend irsend;

void setup() {
    pinMode(LED, OUTPUT); 
    pinMode(7,INPUT_PULLUP); 
}

void loop() {  
    if (digitalRead(7) == HIGH){
        digitalWrite(LED, HIGH);
        for (int i = 0; i < 3; i++) {
            irsend.sendSony(0xa90, 12); // 12 bit wide Sony TV power code
            delay(40);
        }
     } 
     else digitalWrite(LED, LOW);
     
     delay(100);  
}

有谁知道为什么代码在 nano 上运行良好但在上传到 uno r4 时出现此错误?非常感谢。

arduino arduino-uno arduino-ide
1个回答
0
投票

IRremote 库应该与 Uno R4 完全兼容,您可能拥有旧版本或与 https://www.arduino.cc/reference/en/libraries/irremote/

中列出的版本不同的版本

我通过选择 Uno R4 Minima 尝试了你的代码,只需要安装 IRremote 库(在“Sketch”->“添加库”->“管理库”(或 CTRL+SHIFT+I)中,然后输入“irremote”)搜索并安装)。

Using library IRremote at version 4.3.0 in folder: C:\Users\m\Documents\Arduino\libraries\IRremote 
"C:\\Users\\m\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-size" -A "C:\\Users\\m\\AppData\\Local\\Temp\\arduino\\sketches\\D52ECE48380979A802CA96953101D2E8/sketch_mar14a.ino.elf"
Sketch uses 54668 bytes (20%) of program storage space. Maximum is 262144 bytes.
Global variables use 4960 bytes (15%) of dynamic memory, leaving 27808 bytes for local variables. Maximum is 32768 bytes.
© www.soinside.com 2019 - 2024. All rights reserved.