XIAO SAMD21(旧Seeeduino XIAO)

リンク

wiki.seeedstudio.com

リンク

仕様

仕様

  • LED_BUILTIN
    黄色:デジタル13番
  • デジタルI/O
    • デジタルピンはD0-D10の11ピンがあります。
    • 3.3Vで最大出力電流は7mA(因みに、"Uno"の場合は40mAほど)です。
    • 内部プルアップは、pinMode(PIN,INPUT_PULLUP) ; としましょう。
    • 割り込みは、attachInterrupt( )関数を利用して全てのポートで使用可能ですが、
      5ピンと7ピンの2つのピンを同時に使用する事はできません。
      https://github.com/Seeed-Studio/ArduinoCore-samd/blob/master/variants/XIAO_m0/variant.cpp
  • アナログ入出力
    • アナログピンはA0-A10の11ピンがあります。
      (全てのデジタルピンをアナログピンにできると言う事です)
    • アナログ入力は、12ビット入力なのでanalogReadResolution(12);を使えば0-4096で読込まれる様に
      変更出来ます、そうしないと0-1023で読込まれる事になります。
    • アナログ出力は、端子からPWM(8ビット)が出力可能です。(計測では733Hzで出力されていました)
    • A0端子からはDAC出力(8ビット)のPWM出力でなくDAアナログコンバータによる真のアナログ出力
      として機能します。
      (ATSAMD21G18のDACは10Bitありますが、"analogWriteResolution(10)"関数は機能しません)
  • https://wiki.seeedstudio.com/Seeeduino-XIAO/#specification
Item Value
CPU ARM Cortex-M0+ CPU(SAMD21G18) running at up to 48MHz
Flash Memory 256KB
SRAM 32KB
Digital I/O Pins 11
Analog I/O Pins 11
I2C interface 1
SPI interface 1
QTouch 7 (A0,A1,A6,A7,A8,A9,A10)
UART interface 1
Power supply and downloading interface Type-C
Power 3.3V/5V DC
Dimensions 21×17.8×3.5mm

ブートローダー

  • ユーザーのプログラミングプロセスが失敗すると、Seeed Studio XIAO SAMD21 ポートが消える場合があります。この問題は、次の操作で解決できます。
    • Seeed Studio XIAO SAMD21をコンピューターに接続します。
    • ピンセットまたは短い線を使用して、図の RST ピンを 2 回短絡します。
    • オレンジ色の LED ライトが点滅して点灯します。
  • この時点で、チップはブートローダーモードに入り、書き込みポートが再び表示されます。samd21チップには2つのパーティションがあり、1つはブートローダー、もう1つはユーザープログラムです。製品は工場出荷時にシステムメモリにブートローダーコードを書き込みます。上記の手順を実行することで、モードを切り替えることができます。
  • Seeed Studio XIAO SAMD21 をリセットする場合は、次の手順を実行します。
    • Seeed Studio XIAO SAMD21をコンピューターに接続します。
    • ピンセットまたは短い線を使用して、RSTピンを1回だけ短絡します。
    • オレンジ色の LED ライトが点滅して点灯します。

Arduino IDEの設定

  • WIO Terminalと同じ方法で設定できます。
  • はじめてのWioTerminal を参考にしてください。
  • ボードの選択は下記の通り
    ツール > ボード > ●Seeed SAMD Boards > Seeeduino XIAO
  • ポートも設定してください

ピンの使い方

汎用I/Oピンについての注意

MCUの動作電圧は3.3Vです。
汎用I/Oピンに3.3Vを超える電圧を入力すると、チップが損傷する可能性があります。

ピン配置

ピン0

アナログ出力

  • PWM出力でなくDAアナログコンバータによる真のアナログ出力として機能します。
  • 値を1023とすると、約3.3Vが出力されます
    const int analogPin = A0;
    
    void setup() {
    }
    
    // the loop function runs over and over again forever
    void loop() {
      analogWrite(analogPin,0);
      delay(10);
      analogWrite(analogPin,300);
      delay(10);
      analogWrite(analogPin,600);
      delay(10);
      analogWrite(analogPin,1023);
      delay(10);
    }
    

アナログ入力

  • analogRead()
    https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
  • 出力される数字は多少ふらつく
  • 0.0Vでも数字が出る
    const int analogPin = A0;
    int val = 0;
    
    void setup() {
      Serial.begin(9600);
    }
    
    void loop() {
      val = analogRead(analogPin);
      Serial.println(val);
    }
    
  • 0.0V → 12(9~14)
  • 1.0V → 330(314~346)
  • 2.0V → 639(623~655)
  • 3.0V → 935(903~966)
  • 3.3V → 1023
  • アナログ入力は、12ビット入力なのでanalogReadResolution(12);を使えば0-4095で読込まれる様に変更出来ます、そうしないと0-1023で読込まれる事になります。
    const int analogPin = A0;
    int val = 0;
    
    void setup() {
      Serial.begin(9600);
    }
    
    // the loop function runs over and over again forever
    void loop() {
      analogReadResolution(12);
      val = analogRead(analogPin);
      Serial.println(val);
      delay(200);
    }
    
  • 0.0V → 51(40~61)
  • 1.0V → 1267(1244~1290)
  • 2.0V → 2512(2500~2523)
  • 3.0V → 3708(3632~3784)
  • 3.3V → 4095

ピン1

アナログ出力

  • 値を255とすると、約3.3Vが出力されます
    const int analogPin = A1;
    
    void setup() {
    }
    
    // the loop function runs over and over again forever
    void loop() {
      analogWrite(analogPin,0);
      delay(10);
      analogWrite(analogPin,80);
      delay(10);
      analogWrite(analogPin,160);
      delay(10);
      analogWrite(analogPin,255);
      delay(10);
    }
    

アナログ入力

  • ピン0と同じ

ピン2

アナログ入力・出力

  • ピン1と同じ

ピン3

アナログ入力・出力

  • ピン1と同じ

ピン4

アナログ入力・出力

  • ピン1と同じ

ピン5

アナログ入力・出力

  • ピン1と同じ

ピン6

アナログ入力・出力

  • ピン1と同じ

ピン7

アナログ入力・出力

  • ピン1と同じ

ピン8

アナログ入力・出力

  • ピン1と同じ

ピン9

アナログ入力・出力

  • ピン1と同じ

ピン10

アナログ入力・出力

  • ピン1と同じ

3.3V

  • USBに接続したときに3.3Vがでている

GND(グランド)

  • すべてのピンのグランド(マイナス側)になります

5V

  • USBに接続したときに5Vがでている