
Arduinoでタイトルのようなエラーが出た。Arduinoのスケッチブックの保存場所を代えたのが怪しい気がしたけど、どうもToneとNewPing、2つのライブラリの相性が悪いらしい。
エラーログ
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-gcc -Wall -Wextra -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o /var/folders/l9/k0hq4z7n7yd2wnhtdyq5_m_80000gn/T/arduino_build_961248/4th_1912v1_ultrasonic_sensor_doremi.ino.elf /var/folders/l9/k0hq4z7n7yd2wnhtdyq5_m_80000gn/T/arduino_build_961248/sketch/4th_1912v1_ultrasonic_sensor_doremi.ino.cpp.o /var/folders/l9/k0hq4z7n7yd2wnhtdyq5_m_80000gn/T/arduino_build_961248/libraries/NewPing/NewPing.cpp.o /var/folders/l9/k0hq4z7n7yd2wnhtdyq5_m_80000gn/T/arduino_build_961248/core/core.a -L/var/folders/l9/k0hq4z7n7yd2wnhtdyq5_m_80000gn/T/arduino_build_961248 -lm
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `__vector_7'
/var/folders/l9/k0hq4z7n7yd2wnhtdyq5_m_80000gn/T/arduino_build_961248/libraries/NewPing/NewPing.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
「NewPing.h」に対して複数のライブラリが見つかりました
使用済:/Users/daipresents/arduino/libraries/NewPing
次のフォルダのライブラリNewPingバージョン1.9.1を使用中:/Users/daipresents/arduino/libraries/NewPing
exit status 1
ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。
英語だと以下。
Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':
(.text+0x0): multiple definition of `__vector_7'
libraries/NewPing/NewPing.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
Multiple libraries were found for "NewPing.h"
Used: /Users/daipresents/Documents/Arduino/libraries/NewPing
exit status 1
Error compiling for board Arduino/Genuino Uno.
はじめは設定ファイルの場所を変えたので、複数の同じファイルが存在して競合しているかなと思い、Arduinoを確実に終了させ、設定を初期化するために /Users/daipresents/Library/Arduino15を削除してみたけどだめ。
「exit status 1 error compiling for board arduino/Genuino Uno when tone code is used」という記事を発見し「ToneとNewPingが競合している」と理解。
「multiple definition : libraries IRremote.h and NewPing.h」のリンク先「Libraries incompatible: IRemote.cpp vs. NewPing.cpp」を見ると、ライブラリを直接いじって対応しているので今日はここまで。