最初に
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 |
| 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 |
使うまで
下準備
- 1.USBドライバのインストール
- github Seeed-Studio Signed_USB_Serial_Driverからダウンロード
-
https://github.com/Seeed-Studio/Signed_USB_Serial_Driver
USBドライバのインストール: Signed_USB_Serial_Driver
を入力
Arudiono IDEで使う
ポート表
本体シルク(SLK)とポートとの対応
※LEDの-とGNDには、抵抗(470Ω:黄/紫/茶/金)を入れています。
| - | 本体SLK | 本体SLK | - |
|---|---|---|---|
| HC-SR04-CH1Echo | A0 | 5V | HC-SR04 VCC |
| HC-SR04-CH1トリガ | A1 | GND | HC-SR04 GND |
| - | A2 | 3.3V | - |
| - | A3 | A10 | HC-SR04-CH2Echo |
| - | A4 | A9 | HC-SR04-CH2トリガ |
| CH1-LED2 | A5 | A8 | CH2-LED2 |
| CH1-LED1 | A6 | A7 | CH2-LED1 |
| - | QT | QT | - |
2つのHC-SR04から距離を読み取る+LEDも段階的につける
スケッチ
const byte CH1_TRIG_PIN = 1;
const byte CH1_ECHO_PIN = 0;
const byte CH2_TRIG_PIN = 9;
const byte CH2_ECHO_PIN = 10;
const byte CH1_LED1_PIN = 5;
const byte CH1_LED2_PIN = 6;
const byte CH2_LED1_PIN = 8;
const byte CH2_LED2_PIN = 7;
int pulseInTime = 0;
double ch1_distance = 0;
double ch2_distance = 0;
double calValue = 1;
double led1_distance = 20;
double led2_distance = 40;
#define LED_ON HIGH
#define LED_OFF LOW
void setup()
{
Serial.begin(9600);
pinMode(CH1_TRIG_PIN, OUTPUT);
pinMode(CH1_ECHO_PIN, INPUT);
pinMode(CH2_TRIG_PIN, OUTPUT);
pinMode(CH2_ECHO_PIN, INPUT);
pinMode(CH1_LED1_PIN, OUTPUT);
pinMode(CH1_LED2_PIN, OUTPUT);
pinMode(CH2_LED1_PIN, OUTPUT);
pinMode(CH2_LED2_PIN, OUTPUT);
}
void loop()
{
digitalWrite(CH1_TRIG_PIN, HIGH);
delay(1);
digitalWrite(CH1_TRIG_PIN, LOW);
pulseInTime = pulseIn(CH1_ECHO_PIN, HIGH);
ch1_distance = 0.017*pulseInTime*calValue;
delay(10);
digitalWrite(CH2_TRIG_PIN, HIGH);
delay(1);
digitalWrite(CH2_TRIG_PIN, LOW);
pulseInTime = pulseIn(CH2_ECHO_PIN, HIGH);
ch2_distance = 0.017*pulseInTime*calValue;
delay(10);
if (ch1_distance < led1_distance)
{
digitalWrite(CH1_LED1_PIN, LED_ON);
Serial.print("CH1-LED1-H");
} else {
digitalWrite(CH1_LED1_PIN, LED_OFF);
Serial.print("CH1-LED1-L");
}
Serial.print(",");
if (ch1_distance < led2_distance)
{
digitalWrite(CH1_LED2_PIN, LED_ON);
Serial.print("CH1-LED2-H");
} else {
digitalWrite(CH1_LED2_PIN, LED_OFF);
Serial.print("CH1-LED2-L");
}
Serial.print(",");
if (ch2_distance < led1_distance)
{
digitalWrite(CH2_LED1_PIN, LED_ON);
Serial.print("CH2-LED1-H");
} else {
digitalWrite(CH2_LED1_PIN, LED_OFF);
Serial.print("CH2-LED1-L");
}
Serial.print(",");
if (ch2_distance < led2_distance)
{
digitalWrite(CH2_LED2_PIN, LED_ON);
Serial.print("CH2-LED2-H");
} else {
digitalWrite(CH2_LED2_PIN, LED_OFF);
Serial.print("CH2-LED2-L");
}
Serial.print(",");
Serial.print("CH1:");
Serial.print(ch1_distance);
Serial.print(",CH2:");
Serial.print(ch2_distance);
Serial.println("b");
delay(100);
}
最後に
スケッチコードはCC BY-SA 4.0(著作者の情報とCCライセンス継承はお願いします。商用利用・改変・再配布は問題なし)です。