11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Seeed XIAO RP2040のフルカラーLED2種類を制御する

Last updated at Posted at 2021-12-13

やること

Seeed社のRP2040マイコンXAIA RP2040に標準搭載されているフルカラーLEDとNeoPixelを制御します。
いわゆるLチカですが、6色すべてを光らせたいと思います。
今回はArduino IDE 1.8.XXを使って制御します。Python等で制御する場合はピン番号の記述等が異なる可能性があります。
XIAO_RP2040_LED.png

必要なもの

  • Seeed XIAO RP2040
  • ArduinoIDE 1.8.XXのインストールされたパソコン

今回はWindows10とArduino IDE 1.8.13を使用します。
XIAO_RP2040_USB.png

書き込み準備

ボードを追加する

「環境設定」から「追加のボードマネージャのURL」に
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json」
を追加する。(説明画像用意してないです)

Arduino IDE のボードマネージャから「Seeed XIAO RP2040」をインストールします。
XIAORP2040_01.png

今回は1.9.3で確認しています(画像はインストール済みの状態です)。
XIAORP2040_02.png
※2022/6/9追記
現在、バージョン2.7.2とバージョン1.12.0がインストールできるようです。
詳細に検証してないですが、2.7.2のバージョンでは後で説明するsetup1()やloop1()がcore1の処理に割り当てられていない可能性があります。(何にも紐づいていない新しい関数を定義しているとコンパイラが解釈している)
ArduinoIDEからマルチコアを利用するにはバージョン1.x.x系統を使用した方がよさそうです。

ボードが「Seeed XIAO RP2040」で選択されていることを確認します。
XIAORP2040_03.png

ライブラリを追加する

Arduino IDE のライブラリマネージャから「Adafruit NeoPixel」をインストールします。
XIAORP2040_05.png

今回は1.10.1で確認しています(画像はインストール済みの状態です)。
XIAORP2040_04.png

書き込む

以下のサンプルコードをコピペして書き込みます。

フルカラーLEDとNeoPixelそれぞれ
R → G → B → 白
の順で光るはずです。
XIAO_RP2040_LED2.png

XIAO_RP2040_LEDTest.ino
// https://wiki.seeedstudio.com/XIAO-RP2040-with-Arduino/
#include <Adafruit_NeoPixel.h>
 
#define NUMPIXELS 1
#define NEO_PWR 11 //GPIO11
#define NEOPIX 12 //GPIO12

Adafruit_NeoPixel pixels(NUMPIXELS, NEOPIX, NEO_GRB + NEO_KHZ800);

void setup() { //core 0
  pixels.begin();
  pinMode(NEO_PWR,OUTPUT);  digitalWrite(NEO_PWR, HIGH);
  delay(200);
}

void loop() { //core 0
  pixels.setPixelColor(0, pixels.Color(255, 0, 0));  pixels.show();  delay(200); //R
  pixels.clear();  pixels.show();  delay(200);
  
  pixels.setPixelColor(0, pixels.Color(0, 255, 0));  pixels.show();  delay(200); //G
  pixels.clear();  pixels.show();  delay(200);
  
  pixels.setPixelColor(0, pixels.Color(0, 0, 255));  pixels.show();  delay(200); //B
  pixels.clear();  pixels.show();  delay(200);
    
  pixels.setPixelColor(0, pixels.Color(85, 85, 85));  pixels.show();  delay(200); //W
  pixels.clear();  pixels.show();  delay(200); 
}

#define redled 17 //GPIO17 //    //RX_LED
#define greenled 16 //GPIO16 //    //TX_LED
#define blueled 25 //GPIO25 //LED_BUILTIN //YELLOW_LED

void setup1() { //core 1
  pinMode(redled ,OUTPUT);  pinMode(greenled ,OUTPUT);  pinMode(blueled ,OUTPUT);
}

void loop1() { //core 1
  digitalWrite(redled,LOW);  delay(200);
  digitalWrite(redled,HIGH);  delay(200);
  
  digitalWrite(greenled,LOW);  delay(200);
  digitalWrite(greenled,HIGH);  delay(200);
  
  digitalWrite(blueled,LOW);  delay(200);
  digitalWrite(blueled,HIGH);  delay(200);
  
  digitalWrite(redled,LOW);  digitalWrite(greenled,LOW);  digitalWrite(blueled,LOW);  delay(200);
  digitalWrite(redled,HIGH);  digitalWrite(greenled,HIGH);  digitalWrite(blueled,HIGH);  delay(200);
}

注意が必要なのが、NeoPixelではない方のフルカラーLEDはGPIOをHIGHにすると消灯し、LOWにすると点灯するように実装されています。

写真では少しわかりづらいですが、フルカラーLEDの方は混色がうまくいっておらず3色光らせてもそれぞれの色が独立して認識できます。
一方、NeoPixelの方はうまく混色されており、肉眼では白色に見えます。

おまけ

RP2040のマルチコア処理

**setup()loop()はArduinoではおなじみですが、このサンプルコードではそれとは別にsetup1()loop1()**も使って記述しました。
プロセッサであるRP2040には2つのコアがありますので、それぞれのフルカラーLEDを別のコアで制御するように記述しています。

Multicore.ino
void setup() { //core0
}
void loop() { //core0
}

void setup1() { //core1
}
void loop1() { //core1
}

XIAOとXIAO RP2040の違い

どちらもSeeed社の小型マイコンボードです。
XIAOが先に販売されており、ほとんど同じ外形・ピン数のまま、プロセッサをArm Cortex M0+からRP2040に変える形でXIAO RP2040がリリースされました。

スペック

全般的に後発のXIAO RP2040の方がスペックアップしています。
プロセッサのコア数が1→2、動作周波数で3倍、スケッチの書き込み領域であるフラッシュメモリは8倍、変数を格納するSRAMが8倍、加えてNeoPioxelの標準搭載RESETボタンを追加、そして価格は変わらず500円程度、と主たる性能は圧倒的に進化しましたが、そもそもプロセッサが違うので従来型のXIAOにしかない機能もあります。

DAC出力端子

XIAOにはPWMではなく電圧を出力可能なDACピンが1つありますが、XIAO RP2040にはありません。

11ピン全てのGPIOでアナログ入力可能

GPIOの数自体は変わってないですが、XIAO RP2040ではアナログ入力ピン数が11から4に減りました

XIAO_XIAO_RP2040.png

全体的にXIAO RP2040の方が高性能ですのでXIAOの在庫は今後なくなっていくと推測されます。
このように完全な互換ではないので従来のXIAOで書いていたスケッチがそのまま適用できない可能性があり、従来型のXIAOを使いたい人は早めに在庫を抑えた方がよさそうです。

読み方

XIAO シャオ
Adafruit エイダフルート

外部リンク

Seeed社 公式wiki

公式によるArduino IDEでの使い方を解説したページです。

Adafruit NeoPixelLibrary

NeoPixelのライブラリの使い方です。

販売ページ

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?