1.环境配置: 参考Arduino IDE上手教程完成IDE安装, 并根据实际使用的开发板安装对应的板管理, 与需要的驱动库。
2.使用到的驱动库:
3.使用到的硬件产品:


#include <M5Unified.h>
#include "M5_EXTIO2.h"
M5_EXTIO2 extio;
void setup()
{
M5.begin();
// begin(TwoWire *wire, uint8_t sda, uint8_t scl, uint8_t addr)
while (!extio.begin(&Wire, 2, 1, 0x45)) {
Serial.println("Unit EXT.IO2 Init Fail");
M5.Display.println("Unit EXT.IO2 Init Fail");
delay(1000);
}
M5.Display.clear();
M5.Display.setColorDepth(1);
M5.Display.setFont(&fonts::Orbitron_Light_32);
M5.Display.setTextDatum(middle_center);
extio.setAllPinMode(DIGITAL_INPUT_MODE);
}
void loop()
{
M5.Display.clear();
M5.Display.setCursor(0, 0);
for (uint8_t i = 0; i < 8; i++) {
bool status = extio.getDigitalInput(i);
M5.Display.printf("CH[%d]: %d\r\n", i, status ? "HIGH" : "LOW");
}
delay(100);
}#include <M5Unified.h>
#include "M5_EXTIO2.h"
M5_EXTIO2 extio;
bool output_level = LOW;
void setup()
{
M5.begin();
// begin(TwoWire *wire, uint8_t sda, uint8_t scl, uint8_t addr)
while (!extio.begin(&Wire, 2, 1, 0x45)) {
Serial.println("Unit EXT.IO2 Init Fail");
M5.Display.println("Unit EXT.IO2 Init Fail");
delay(1000);
}
M5.Display.clear();
M5.Display.setColorDepth(1);
M5.Display.setFont(&fonts::Orbitron_Light_32);
M5.Display.setTextDatum(middle_center);
extio.setAllPinMode(DIGITAL_OUTPUT_MODE);
}
void loop()
{
output_level = !output_level;
M5.Display.clear();
M5.Display.setCursor(0, 0);
for (uint8_t i = 0; i < 8; i++) {
extio.setDigitalOutput(i, output_level);
M5.Display.printf("CH[%d]: %d\r\n", i, output_level ? "HIGH" : "LOW");
delay(200);
}
}#include <M5Unified.h>
#include "M5_EXTIO2.h"
M5_EXTIO2 extio;
void setup()
{
M5.begin();
// begin(TwoWire *wire, uint8_t sda, uint8_t scl, uint8_t addr)
while (!extio.begin(&Wire, 2, 1, 0x45)) {
Serial.println("Unit EXT.IO2 Init Fail");
M5.Display.println("Unit EXT.IO2 Init Fail");
delay(1000);
}
M5.Display.clear();
M5.Display.setColorDepth(1);
M5.Display.setFont(&fonts::Orbitron_Light_32);
M5.Display.setTextDatum(middle_center);
extio.setAllPinMode(ADC_INPUT_MODE);
}
void loop()
{
M5.Display.clear();
M5.Display.setCursor(0, 0);
for (uint8_t i = 0; i < 8; i++) {
uint16_t adc = extio.getAnalogInput(i, _12bit); // Get ADC value. 获取ADC值
M5.Display.printf("CH:%d ADC: %d\r\n", i, adc);
}
delay(200);
}#include <M5Unified.h>
#include "M5_EXTIO2.h"
M5_EXTIO2 extio;
void setup()
{
M5.begin();
// begin(TwoWire *wire, uint8_t sda, uint8_t scl, uint8_t addr)
while (!extio.begin(&Wire, 2, 1, 0x45)) {
Serial.println("Unit EXT.IO2 Init Fail");
M5.Display.println("Unit EXT.IO2 Init Fail");
delay(1000);
}
M5.Display.clear();
M5.Display.setColorDepth(1);
M5.Display.setFont(&fonts::Orbitron_Light_32);
M5.Display.setTextDatum(middle_center);
extio.setAllPinMode(SERVO_CTL_MODE);
}
void loop()
{
M5.Display.clear();
M5.Display.setCursor(0, 0);
for (uint8_t deg = 0; deg <= 180; deg += 45) {
for (uint8_t i = 0; i < 8; i++) {
extio.setServoAngle(i, deg);
M5.Display.printf("CH[%d]: DEG: %d\r\n", i, deg);
delay(200);
}
}
delay(1000);
M5.Display.clear();
M5.Display.setCursor(0, 0);
for (int pulse = 500; pulse <= 2500; pulse += 100) {
for (uint8_t i = 0; i < 8; i++) {
extio.setServoPulse(i, pulse);
M5.Display.printf("CH:%d P: %d\r\n", i, pulse);
}
}
delay(1000);
}#include <M5Unified.h>
#include "M5_EXTIO2.h"
M5_EXTIO2 extio;
void setup()
{
M5.begin();
// begin(TwoWire *wire, uint8_t sda, uint8_t scl, uint8_t addr)
while (!extio.begin(&Wire, 2, 1, 0x45)) {
Serial.println("Unit EXT.IO2 Init Fail");
M5.Display.println("Unit EXT.IO2 Init Fail");
delay(1000);
}
extio.setAllPinMode(RGB_LED_MODE);
M5.Display.clear();
M5.Display.setColorDepth(1);
M5.Display.setFont(&fonts::Orbitron_Light_32);
M5.Display.setTextDatum(middle_center);
M5.Display.setCursor(0, 0);
M5.Display.println("Unit EXT.IO2 RGB LED MODE");
}
void loop()
{
for (uint8_t i = 0; i < 8; i++) {
extio.setLEDColor(i, 0xff0000);
}
delay(1000);
for (uint8_t i = 0; i < 8; i++) {
extio.setLEDColor(i, 0x00ff00);
}
delay(1000);
for (uint8_t i = 0; i < 8; i++) {
extio.setLEDColor(i, 0x0000ff);
}
delay(1000);
}1.下载模式: 不同设备进行程序烧录前需要下载模式, 不同的主控设备该步骤可能有所不同。详情可参考Arduino IDE上手教程页面底部的设备程序下载教程列表, 查看具体的操作方式。
CoreS3长按复位按键(大约2秒)直到内部绿色LED灯亮起,便可松开,此时设备已进入下载模式,等待烧录。
使用数字输出模式,拓展 IO 控制多路LED灯点亮与熄灭。