Help us understand the problem. What is going on with this article?

Arduinoでボードを判別する

More than 1 year has passed since last update.

ボードによってすることを分けたい

例えばUNOの場合はAをするが、Microだったらやらない、という具合。

#ifdefを使う

#ifdef ARDUINO_AVR_UNO
//UNOだったらすること
#endif

こういう感じです。
#if defined(ARDUINO_AVR_UNO)といった形でも代用可。

中身は?

さっきのARDUINO_AVR_UNOにあたる部分は、boards.txtの"build.board"の値の前にARDUINO_をつけて求めます。
例えばArduino Duemilanove or Diecimilaでしたら、

boards.txt
diecimila.build.board=AVR_DUEMILANOVE

とあるので

#ifdef ARDUINO_AVR_DUEMILANOVE
//Duemilanoveだったらすること
#endif

と判別します。

代表的なボードのマクロ

ボード マクロ
UNO ARDUINO_AVR_UNO
Duemilanove/Diecimila ARDUINO_AVR_DUEMILANOVE
Yún ARDUINO_AVR_YUN
Nano ARDUINO_AVR_NANO
MEGA2560 ARDUINO_AVR_MEGA2560
MEGA1280 ARDUINO_AVR_MEGA
Mega ADK ARDUINO_AVR_ADK
Leonardo ARDUINO_AVR_LEONARDO
Micro ARDUINO_AVR_MICRO
Esplora ARDUINO_AVR_ESPLORA
Mini ARDUINO_AVR_MINI
Ethernet ARDUINO_AVR_ETHERNET
Fio ARDUINO_AVR_FIO
BT ARDUINO_AVR_BT
Pro/Pro Mini ARDUINO_AVR_PRO
NG/older ARDUINO_AVR_NG
Robot Control ARDUINO_AVR_ROBOT_CONTROL
Robot Motor ARDUINO_AVR_ROBOT_MOTOR
Gemma ARDUINO_AVR_GEMMA
AVR全般 __AVR__
DUE ARDUINO_SAM_DUE
ZERO ARDUINO_SAMD_ZERO
Gemma ARDUINO_AVR_GEMMA
Gemma ARDUINO_AVR_GEMMA
Gemma ARDUINO_AVR_GEMMA
Gemma ARDUINO_AVR_GEMMA
Teensy CORE_TEENSY
ESP8266全般 ESP8266
Generic ESP8266 Module ARDUINO_ESP8266_ESP01

応用

#errorでUNOじゃないときにエラーを出してみる。

#if !defined(ARDUINO_AVR_UNO)
#error This board is not supported! Please use Arduino UNO.
#endif

備考

Arduino IDE 1.6.7で試しています。
上の表はUNOとESP8266しか試してないです...

また、boards.txtはデフォルトのボードのものは
インストールフォルダ\hardware\arduino\avr\boards.txt
にあります。

"ボードマネージャー"で入れたものは
Windowsだと
ユーザーのフォルダ\AppData\Local\Arduino15\packages\
macOSは
~/Library/Arduino15/packages
Liunxだと
~/.arduino15/packages
の中のどこかにあるはずです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした