ESP32 Lite V1.0.0 не могу разобраться с пинами

Вы плату какую выбрали? естественно ихтамнету, выберите вашу плату и они появятся, смотрите опубликованный вами в первом посте рисунок, увидели 36 и 39?

ЗЫ розовенькие это не только девушки интересной ориентации но и цвета GPIO

Я уже понял что плата не та выбрана. Как выбрать ТУ плату? Список то не маленький, а какая у меня? Где найти информацию?

На моей плате два i2c, в смысле железных.

Вот тут нарыл
https://www.snapeda.com/parts/ESP32-D0WDQ6/Espressif%20Systems/datasheet/

Писал жеж уже, перечитай тему ты же сам написал, что плата у тебя WEMOS LOLIN32 Lite
а выбираешь хренте что, это такой особый вид мазохизма?

Давайте проясню ситуацию.

Шина I2C на ESP32 не связана жёстко с пинами так, как это сделано на 328-м МК.

Инициализация HAL происходит так:

log_i("Initialising I2C Master: sda=%d scl=%d freq=%d", sda, scl, frequency);

    i2c_config_t conf = { };
    conf.mode = I2C_MODE_MASTER;
    conf.scl_io_num = (gpio_num_t)scl;  // Сюда смотреть
    conf.sda_io_num = (gpio_num_t)sda;
    conf.scl_pullup_en = GPIO_PULLUP_ENABLE;
    conf.sda_pullup_en = GPIO_PULLUP_ENABLE;
    conf.master.clk_speed = frequency;
    conf.clk_flags = I2C_SCLK_SRC_FLAG_FOR_NOMAL; //Any one clock source that is available for the specified frequency may be choosen

    esp_err_t ret = i2c_param_config((i2c_port_t)i2c_num, &conf);
   ....

Т.е. для нормальной работы нужно физически подключить I2C Slave на те GPIO, которые описаны в variants.… той платы, что в наличии.

Если платы нет в списке, в принципе, можно брать любую похожую по схемотехническому решению. Хоть DevkitC для Wemos - плюс/минус все будет одинаково функционировать.

Например, если на пине 22 висит светодиод, то следует взять такую, раскладка GPIO в variants которой не привязывает SDA/SCL к данному пину.

Коли подходящей не нашлось - нет ничего страшного в том, чтобы заинитить Wire на свободных GPIO.

Обращу внимание на то, что во фреймворке для Arduino и на платах указываются номера GPIO, а не выводов ESP32.

А как мне узнать какой именно #define Pins_Arduino_h файл подтягивается?

Ты накатил уже чтоле )))
Выше, пост, там 5 пунктов, чётко, разжёвано, осталось только проглотить…

Пошёркался по интернету, везде кочует эта ошибка в распиновке, не соответствие описанию производителя платы, это я о CLK на 22 пине!

При компиляции, ежели включить подробный лог, написано что там подтягивается. Может и этот pins_arduino засветится.

Меня этот вопрос никогда не интересовал.

Узнать, куда нацелены в текущей сборке SDA и SCL можно просто распечатав их в Serial.

Вот, номера постов пока недоступны, повторяю, “радиостанция на броневике”

нет, смотреть только ручками, в аддоне

Номера постов доступны.

Нужно взять ссылку с цифирь, которые обозначают возраст поста, например: “13 мин”
Или под постом иконка “цепь”.

Господа, я очень признателен вам за участие в дебатах. но очень хочу “тайм аут”, спать рубит. Да и обкурить надо всё. К вечеру вернусь, может что и надумаем. По поводу lolin32-lite, я запускаю скеч примера, и ничего не получается, не те пины, НО запустить сканер с прописаными пинами и всё ровно, значит i2с не на 19 и 23 по умолчанию. А что ещё не так будит в дальнейшем. Завести датчик это можно, но хочется понять как работает, от куда настройки цепляются, и так далее. Я не пока не могу объяснить понятнее, здоровье не позволяет. Но позже я буду в норме. Еще раз всем спасибо и до связи (я надеюсь…)

Мысль неправильная, проверяем так, берём любую плату ESP32, выбираем в IDE Wemos Lolin32 Lite, подключаем LCD1602_I2C на 19 и 23 пины и загружаем этот скетч:

// ESP32 I2C Scanner
// Based on code of Nick Gammon  http://www.gammon.com.au/forum/?id=10896
// ESP32 DevKit - Arduino IDE 1.8.5
// Device tested PCF8574 - Use pullup resistors 3K3 ohms !
// PCF8574 Default Freq 100 KHz 

#include <Wire.h>

void setup()
{
  Serial.begin (115200);  
//  Wire.begin (SDA, SCL);   // sda= GPIO_21 /scl= GPIO_22 (to STD)
                           // WEMOS  
    Wire.begin ();  
}

void Scanner ()
{
  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;

  Wire.begin();
  for (byte i = 8; i < 120; i++)
  {
    Wire.beginTransmission (i);          // Begin I2C transmission Address (i)
    if (Wire.endTransmission () == 0)  // Receive 0 = success (ACK response) 
    {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);     // PCF8574 7 bit address
      Serial.println (")");
      count++;
    }
  }
  Serial.print ("Found ");      
  Serial.print (count, DEC);        // numbers of devices
  Serial.println (" device(s).");
}

void loop()
{
  Scanner ();
  delay (1000);
}

В мониторе порта имеем:

I2C scanner. Scanning ...
Found address: 63 (0x3F)
Found 1 device(s).

I2C scanner. Scanning ...
Found address: 63 (0x3F)
Found 1 device(s).

I2C scanner. Scanning ...
Found address: 63 (0x3F)
Found 1 device(s).

Резюме:
По умолчанию интерфейс I2C инициализируется значениями прописанными в распиновке выбранной платы, то-есть пины 19 и 23 для WEMOS LOLIN32 Lite

А вот такой вопрос, ESP32 имеет два интерфейса I2C, как задействовать второй?

И проверим подключение дисплея на нестандартных пинах:

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{ 
  Wire.begin(16,17);
  lcd.init();                      // initialize the lcd 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Hello, world!");
  lcd.setCursor(2,1);
  lcd.print("Ywrobot Arduino!");
   lcd.setCursor(0,2);
  lcd.print("Arduino LCM IIC 2004");
   lcd.setCursor(2,3);
  lcd.print("Power By Ec-yuan!");
}

Wire1.begin(…); и тд.

Сканер портов адаптировать несложно, вот другие библиотеки использующие I2C?

#include "Wire.h"

void setup() {
  Serial.begin(115200);
  Wire1.begin(16,17,850000UL);
}

void loop() {
  byte error, address;
  int nDevices = 0;

  delay(5000);

  Serial.println("Scanning for I2C devices ...");
  for(address = 0x01; address < 0x7f; address++){
    Wire1.beginTransmission(address);
    error = Wire1.endTransmission();
    if (error == 0){
      Serial.printf("I2C device found at address 0x%02X\n", address);
      nDevices++;
    } else if(error != 2){
      Serial.printf("Error %d at address 0x%02X\n", error, address);
    }
  }
  if (nDevices == 0){
    Serial.println("No I2C devices found");
  }
}

Какой библиотеке можно передать адрес инстанса TwoWire, та и будет работать сразу, адафруит, например:

bool Adafruit_BME280::begin(**uint8_t addr**, TwoWire *theWire) {
bmp.begin(0x..., &Wire1);