// Одноразовый скетч: ищет, на какой паре пинов висит встроенный OLED. // Шелкография подписывает GPIO8/GPIO9 (дефолтные Wire-пины ESP32-C3), но у плат // этого семейства экран обычно разведён на GPIO5/GPIO6. Проверяем перебором. #include struct PinPair { uint8_t sda; uint8_t scl; }; static const PinPair CANDIDATES[] = { {5, 6}, {6, 5}, {8, 9}, {9, 8} }; static void scanPair(uint8_t sda, uint8_t scl) { Wire.end(); if (!Wire.begin(sda, scl)) { Serial.printf("SDA=%u SCL=%u: init failed\n", sda, scl); return; } uint8_t found = 0; for (uint8_t addr = 1; addr < 127; addr++) { Wire.beginTransmission(addr); if (Wire.endTransmission() == 0) { Serial.printf("SDA=%u SCL=%u: device 0x%02X\n", sda, scl, addr); found++; } } if (found == 0) { Serial.printf("SDA=%u SCL=%u: nothing\n", sda, scl); } } void setup() { Serial.begin(115200); } void loop() { // Повторяем в цикле: при нативном USB порт переоткрывается после заливки, // и однократный вывод из setup можно не успеть поймать. Serial.println("--- I2C scan ---"); for (const PinPair &p : CANDIDATES) { scanPair(p.sda, p.scl); } delay(5000); }