Может ли ESP 32 использовать библиотеку проводов точно так же, как это было в Arduino?

Сравните видео с YouTube и эту веб-страницу: в первом случае программирование сильно отличалось в ESP32, а в Arduino nano, в то время как веб-страница, казалось, подразумевала, что они работают точно так же.

Можем ли мы использовать один и тот же код для стандартной библиотеки Arduino, такой как wire library, для ESP32 и ESP8266, или мы должны сделать что-то другое?

, 👍1

Обсуждение

в видео он использует не Arduino, а непосредственно фреймворк Espressif IDF. пакет плат Arduino esp32 содержит библиотеку проводов для Arduino, @Juraj

@Juraj так ESP 32 и ESP 8266 используются точно так же, как Arduino для стандартных библиотек? Я слышал, что методы наклеивания ярлыков были немного другими., @ShoutOutAndCalculate

У меня не было проблем с использованием одного и того же скетча с библиотекой Wire на Uno и esp8266, @Juraj

программное обеспечение то же самое. следите за напряжениями и подтягиваниями., @dandavis


1 ответ


5

Код, использующий библиотеку Arduino Wire, как правило, переносим между процессорами, но есть подводные камни, на которые следует обратить внимание. Один из них, о котором я знаю, - это разница в проводных библиотеках для ESP32 и ESP8266. Метод TwoWire::begin() для ESP32 имеет прототип:

bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency);

принимая во внимание, что для ESP8266 это:

void TwoWire::begin(int sda, int scl, uint8_t address);

Итак, вызов begin() с использованием библиотеки ESP # 2 установит часы с использованием третьего параметра, тогда как на ESP8266 он усечет третий параметр и будет использовать его в качестве адреса.

Если вы хотите, чтобы код был переносимым между ESP32 и ESP8266, то для решения этой конкретной проблемы необходимо вызвать TwoWire::begin( my_SDA_pin, my_SCL_pin ) (указав только два параметра: контакты SDA и SCL) и использовать отдельный вызов TwoWire::setClock( my_clock_speed ) для установки часы.

Могут быть и другие различия, о которых я не знаю ...

,