最初に
SeeeduinoXIAOマイコンとは
スペック表
| 項目 |
内容 |
備考 |
| プロセッサ |
ARM Cortex-M0+ processor running at up to 48 MHz |
32ビットRISC CPU |
| MODEL |
ESP-8266 D1 mini HW-350 |
フラッシュメモリ4MB |
| メーカー |
Seed |
|
| GDIO |
14 |
|
| Digital Pin |
11 |
|
| Analog Pin |
11 |
8/10/12 resoolution:0-3.3V |
| DAC |
1 |
10-bit / 350ksps |
| I2C |
1 |
|
| UART |
1 |
|
| SPI |
1 |
|
| PWM |
- |
ソフトウェアPWM |
| Arduiono |
互換 |
追加のボードマネージャーURL [Seeduino] https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
|
| USB形状 |
microB |
|
| USBシリアル |
CH340G |
シリアルポート |
本体シルク(SLK)とポートとの対応
|
|
本体SLK |
本体SLK |
|
|
| DAC |
D0 |
A0 |
5V |
|
|
|
D1 |
A1 |
GND |
|
|
|
D2 |
A2 |
3.3V |
|
|
|
D3 |
A3 |
A10 |
D10 |
MOSI |
| SDA |
D4 |
A4 |
A9 |
D9 |
NISO |
| SCL |
D5 |
A5 |
A8 |
D8 |
SCK |
| TX |
D6 |
A6 |
A7 |
D7 |
RX |
|
|
QT |
QT |
|
|
距離センサ GP2Y0E03とは
アプリケーションノート
https://jp.sharp/products/device/doc/opto/gp2y0e02_03_appl_j.pdf
スペック表
| 項目 |
内容 |
備考 |
| 電源電圧 |
2.7V~5.5V |
|
| 測定距離 |
0.04m~0.5m |
|
| 測定方式 |
赤外線 CMOS |
|
| インターフェイス |
アナログ / I2C(3.3V) |
|
ポート表
| 項目 |
内容 |
備考 |
| 1 |
電源電圧 |
2.7V~5.5V |
| 2 |
アナログ出力 |
0.04m~0.5m(範囲外:MAX値) |
| 3 |
GND |
|
| 4 |
VIN(IO) |
-0.3~3.3V |
| 5 |
GPIO |
+3.3Vを入れる! |
| 6 |
SCL |
I2C Clock |
| 7 |
SDA |
I2C Data Bus |
※I2Cは3.3V系
使うまで
下準備
- 1.USBドライバのインストール
- github Seeed-Studio Signed_USB_Serial_Driverからダウンロード
-
https://github.com/Seeed-Studio/Signed_USB_Serial_Driver
USBドライバのインストール: Signed_USB_Serial_Driver
2.Arudion IDE準備[追加のボードマネージャー]
ファイル→基本設定→追加のボードのマネージャーURLに入力
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
を入力
3.Arudion IDE準備[ボード]
ツール→ボード→ボードマネージャー
ボードマネージャー:seeeduino で検索
Seeed SAMD Boards by Seeed Studio バージョン を選択
インストールボタンがある場合は、未インストールなのでインストール
ツール→ボード→[Seeed SAMD Boards]→メニューから[Seeeduino XIAO]
4.Arudion IDE準備[ポード]
ツール→ポード→USB COMポートを選択
Arudiono IDEで使う
ポート表
本体シルク(SLK)とポートとの対応
| HC-SR04 |
本体SLK |
本体SLK |
HC-SR04 |
| - |
A0 |
5V |
- |
| - |
A1 |
GND |
GP2Y0E03 GND |
| GP2Y0E03 |
A2 |
3.3V |
GP2Y0E03 VCC/VIN/GPIO |
| - |
A3 |
A10 |
- |
| - |
A4 |
A9 |
- |
| - |
A5 |
A8 |
- |
| - |
A6 |
A7 |
- |
| - |
QT |
QT |
- |
GP2Y0E03からアナログ入力で距離を読み取る
スケッチ
#define ADIN_PIN A2
#define ADIN_AVARAGE_NUM 10
#define ADIN_AVARAGE_DELAY 0
#define CHECK_DELAY 500
#define ADIN_LOW_VALUE 0 // 分解能(最小値)
#define ADIN_HIGH_VALUE 1023 // 分解能(最大値)
#define ADIN_LOW_mV_VALUE 0 // ADの最小値(mV:3.3V)
#define ADIN_HIGH_mV_VALUE 3300 // ADの最大値(mV:3.3V)
#define ADIN_LOW_LIMIT_mV 500 // ADの有効最小値(mV:2.2V)
#define ADIN_HIGH_LIMIT_mV 2200 // ADの有効最大値(mV:0.5V)
#define ADIN_LOW_mV_mm 500 // 0.5V-2.2V(4-50cm)が有効範囲。最小電圧値が500mm
#define ADIN_HIGH_mV_mm 40 // 0.5V-2.2V(4-50cm)が有効範囲。最大電圧値が40mm
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ADIN_PIN, INPUT);
}
int analogInputAverage(int inputPinNo, int averageNum, int readDelay) {
long sumAnalogInputValue;
int loop;
sumAnalogInputValue = 0;
for (loop = 0; loop < averageNum; loop++) {
sumAnalogInputValue = sumAnalogInputValue + analogRead(inputPinNo);
if (ADIN_AVARAGE_DELAY > 0) {
delay(ADIN_AVARAGE_DELAY);
}
}
return sumAnalogInputValue / averageNum;
}
void loop() {
int analogValue;
int analogmV;
int distancemm;
// put your main code here, to run repeatedly:
// センサーから値を読み取る
analogValue = analogInputAverage(ADIN_PIN, ADIN_AVARAGE_NUM, ADIN_AVARAGE_DELAY);
analogmV = map(analogValue, ADIN_LOW_VALUE, ADIN_HIGH_VALUE, ADIN_LOW_mV_VALUE, ADIN_HIGH_mV_VALUE);
distancemm = map(analogmV, ADIN_LOW_LIMIT_mV, ADIN_HIGH_LIMIT_mV, ADIN_LOW_mV_mm, ADIN_HIGH_mV_mm);
if ((analogmV < ADIN_LOW_LIMIT_mV) || (analogmV > ADIN_HIGH_LIMIT_mV)) {
Serial.print("ng:");
} else {
Serial.print("ok:");
}
Serial.print("AD:");
Serial.print(analogValue);
Serial.print(" / VOLT: ");
Serial.print(analogmV);
Serial.print(" / DISTANCE:");
Serial.print(distancemm);
Serial.println("mm");
delay(CHECK_DELAY);
}
最後に
スケッチコードはCC BY-SA 4.0(著作者の情報とCCライセンス継承はお願いします。商用利用・改変・再配布は問題なし)です。