ぼくのデジタルライフ

ダラダラ書いてる備忘録的な何か

Seeeduino XIAOをつかってみた

f:id:computer-life:20210518172507j:plain

Seeeduino XIAOを手に入れたので使ってみました。

M5 Atom(写真右のやつ)よりも、一回りくらい小さいです。

スペック

スペックはこんな感じ。

  • CPU:Arm Cortex-M0+ 32ビット 48 MHz(SAMD21G18)
  • ストレージ:256 KB Flash、32 KB SRAM
  • ピン数:14(入出力 ×11、5 V ×1、3.3 V ×1、GND ×1)
  • インターフェース: I2C ×1、UART ×1、SPI ×1
  • サイズ:20 × 17.5 × 3.5 mm

スペック情報は、スイッチサイエンスさんのページから引用させていただきました。

www.switch-science.com

Arduino互換機で、スケッチの書き込みにはArduinoIDEが使えます。

USB Type-Cで給電・書き込みができるのは個人的にポイント高いです。

ArduinoIDEの設定

こちらを参考にArduinoIDEを設定しました。

wiki.seeedstudio.com

Lチカしてみる

f:id:computer-life:20210518191025j:plain

マイコンボードを手に入れたらとりあえずLチカするのが定石なので、今回もLチカしてみました。5つのLEDをランダムに点灯させてみます。

random関数、randomSeed関数については、下のページを参考にさせていただきました。

random関数は疑似乱数のため、スケッチを実行するたびに毎回異なる値がほしいときは、未接続のピンの値(ノイズ)等を利用して擬似乱数列を初期化してあげる必要があるのだそう。

正直よくわかってないとこもあるので、間違ってたら教えてください...

今回書いたプログラムでは、Seeeduino XIAOの0ピンを未使用とし、1~5ピンにLEDをつなぎました。

long randNumber;

void setup() {
  Serial.begin(115200); // 115200bpsでシリアルポートを開く
  randomSeed(analogRead(0));  // 0ピンのノイズを利用
  
  // 1~5ピンを出力に設定
  pinMode(1, OUTPUT); 
  pinMode(2, OUTPUT);  
  pinMode(3, OUTPUT); 
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT); 
}

void loop() {
  randNumber = random(1, 6);  // 1以上6未満の乱数を生成
  Serial.println(randNumber);  // シリアルにプリント
  digitalWrite(randNumber, HIGH); // LEDを点灯
  delay(500);  // 0.5秒待つ
  digitalWrite(randNumber, LOW); // LEDを消灯
}