0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SeeeduinoXIAOマイコンで、距離センサ「GP2Y0E03」を使う

Last updated at Posted at 2025-08-12

最初に

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ライセンス継承はお願いします。商用利用・改変・再配布は問題なし)です。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?