m5paper_i2c_scan.ino
// ---------------------------------------------------------------
// m5paper_i2c_scan.ino
//
// Jun/6/2022
// ---------------------------------------------------------------
#include <M5EPD.h>
// I2C (internal) - SDA: 21, SCL: 22
// I2C (external - Port A) - SDA: 25, SCL: 32
M5EPD_Canvas canvas(&M5.EPD);
// ---------------------------------------------------------------
void setup()
{
M5.begin();
Wire1.begin(25, 32);
M5.EPD.Clear(true);
canvas.createCanvas(960, 540);
canvas.setTextSize(5);
canvas.drawString("m5paper_i2c_scan", 30, 100);
canvas.pushCanvas(0,0,UPDATE_MODE_A2);
}
// ---------------------------------------------------------------
void loop()
{
int address;
int error;
char buf[60];
int aa[] = {0,0,0,0,0,0,0,0,0,0};
Serial.println("Scanning internal I2C");
canvas.drawString("Scanning internal I2C", 30, 150);
canvas.pushCanvas(0,0,UPDATE_MODE_A2);
for(address = 1; address < 127; address++)
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if(error == 0)
{
Serial.println(address, HEX);
}
delay(10);
}
delay(500);
canvas.drawString("Scanning external I2C (PortA)", 30, 200);
canvas.pushCanvas(0,0,UPDATE_MODE_A2);
int nDevices = 0;
Serial.println("Scanning external I2C (PortA)");
for(address = 1; address < 127; address++)
{
Wire1.beginTransmission(address);
error = Wire1.endTransmission();
if(error == 0)
{
Serial.println(address, HEX);
aa[nDevices] = address;
nDevices++;
}
delay(10);
}
sprintf(buf, "aa[0] = %x", aa[0] );
canvas.drawString(buf, 30, 250);
sprintf(buf, "aa[1] = %x", aa[1] );
canvas.drawString(buf, 430, 250);
sprintf(buf, "aa[2] = %x", aa[2] );
canvas.drawString(buf, 30, 300);
sprintf(buf, "aa[3] = %x", aa[3] );
canvas.drawString(buf, 430, 300);
sprintf(buf, "nDevices = %d", nDevices );
canvas.drawString(buf, 30, 350);
canvas.pushCanvas(0,0,UPDATE_MODE_A2);
delay(5000);
}
// ---------------------------------------------------------------
実行結果

