
Arduino 上手教程



#include "M5Chain.h"
#define RXD_PIN GPIO_NUM_5 // 47 for the other side of Chain DualKey
#define TXD_PIN GPIO_NUM_6 // 48 for the other side of Chain DualKey
Chain M5Chain;
device_list_t *device_list = NULL;
uint16_t device_count = 0;
uint8_t opr_status = 0;
uint16_t tof_distance;
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("===========================");
Serial.println("M5Stack Chain ToF Test");
M5Chain.begin(&Serial2, 115200, RXD_PIN, TXD_PIN);
while (!M5Chain.isDeviceConnected()) {
Serial.println("No device connected");
delay(1000);
}
M5Chain.getDeviceNum(&device_count);
device_list = (device_list_t *)malloc(sizeof(device_list_t));
device_list->count = device_count;
device_list->devices = (device_info_t *)malloc(sizeof(device_info_t) * device_count);
M5Chain.getDeviceList(device_list);
if (device_list->devices[0].device_type == CHAIN_TOF_TYPE_CODE) {
Serial.println("ID[1] is Chain ToF\n");
delay(1000);
} else {
Serial.println("ID[1] is NOT Chain ToF\n");
return;
}
// Device ID, ToF measure mode (CONTINUOUS/SINGLE/STOP), operation status pointer
M5Chain.setToFMeasureMode(1, CHAIN_TOF_MODE_SINGLE, &opr_status);
// Device ID, ToF measure time (20-200 ms), operation status pointer
M5Chain.setToFMeasureTime(1, 50, &opr_status);
}
void loop() {
M5Chain.getToFDistance(1, &tof_distance); // Device ID
Serial.printf("tof_distance: %4d mm\n", tof_distance); // 30 - 2000
delay(200);
}用 Chain Bridge 连接器连接主控 Chain DualKey 和 Chain ToF。连接时需要注意方向,三角箭头从主控 Chain DualKey 指向外侧,如图:
将以上程序编译并上传至设备,点击 Arduino IDE 右上角的按钮打开串口监视器(Serial Monitor)。可以看到 Chain ToF 到遮挡物的距离(有效范围为 30 - 2000 mm):