Arduino IDE
動作確認できたArduino IDEのバージョンです。
- 1.8.19
- 2.2.1
環境設定
Seeed Wikiを参照して環境を構築します。
Arduino IDE → Preferencesを選択し、Additional boards manager URLsにjsonのURLを追加します。
Tools → Board Managerを選択し、Seeed nRF52 BoardsとSeeed nRF52 mbed-enabled Boardsを追加します。
Boardの選択
- Board: "Seeed XIAO nRF52840"を選択
- Port: "/dev/cu.usbmodem1101"を選択
Bootloaderの書き込み
- Programmer: "Bootloader DFU for Bluefruit nRF52"を選択
- Burn Bootloaderを実行
サンプルコード
基板上のLEDをRGBで光らせるサンプルコードです。
Seeed Wikiのサンプルコードをビルドするとエラーが出ます。
/Users/kitazaki/Library/Arduino15/packages/Seeeduino/tools/arm-none-eabi-gcc/9-2019q4/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: /private/var/folders/zw/c0lhq70d17gccbb2nn0vqq4m0000gp/T/arduino/sketches/A36899421A2D1E4AD29D156E7145D9A1/../../cores/Seeeduino_nrf52_xiaonRF52840_softdevice_s140v6,debug_l0_515b74aeb10268b1433930586254a848/core.a(main.cpp.o): in function `loop_task(void*)':
/Users/kitazaki/Library/Arduino15/packages/Seeeduino/hardware/nrf52/1.1.4/cores/nRF5/main.cpp:57: undefined reference to `Adafruit_USBD_CDC::operator bool()'
/Users/kitazaki/Library/Arduino15/packages/Seeeduino/tools/arm-none-eabi-gcc/9-2019q4/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: /Users/kitazaki/Library/Arduino15/packages/Seeeduino/hardware/nrf52/1.1.4/cores/nRF5/main.cpp:57: undefined reference to `Adafruit_USBD_CDC::begin(unsigned long)'
/Users/kitazaki/Library/Arduino15/packages/Seeeduino/tools/arm-none-eabi-gcc/9-2019q4/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld: /Users/kitazaki/Library/Arduino15/packages/Seeeduino/hardware/nrf52/1.1.4/cores/nRF5/main.cpp:57: undefined reference to `Serial'
collect2: error: ld returned 1 exit status
exit status 1
Compilation error: exit status 1
#include "Adafruit_TinyUSB.h"
の1行を追加します。
#include "Adafruit_TinyUSB.h"
void setup() {
pinMode(LED_RED, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
digitalWrite(LED_RED, HIGH); /// turn OFF
digitalWrite(LED_BLUE, HIGH);
digitalWrite(LED_GREEN, HIGH);
}
void loop() {
digitalWrite(LED_RED, LOW); // turn ON
delay(1000);
digitalWrite(LED_RED, HIGH); /// turn OFF
digitalWrite(LED_BLUE, LOW);
delay(1000);
digitalWrite(LED_BLUE, HIGH);
digitalWrite(LED_GREEN, LOW);
delay(1000);
digitalWrite(LED_GREEN, HIGH);
}