Функция задержки не работает с ESP32
По какой-то причине функция задержки не работает (она вообще не задерживается) с моим советом по развитию ESP32. Кто-нибудь сталкивался с подобной проблемой раньше? Он не работает ни с другими скетчами, ни с циклом, ни с настроенными функциями. Образец скетча:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>
#include <BleMouse.h>
// mouse object
BleMouse ble("test", "me");
/** I2C pins **/
#define I2C_SDA 33
#define I2C_SCL 32
// I2C object
TwoWire wire_custom = TwoWire(0);
// Sensor object
Adafruit_BNO055 bno = Adafruit_BNO055(55, 0x28, &wire_custom);
/**************************************************************************/
function definitions
...
/**************************************************************************/
void setup(void)
{
wire_custom.begin(I2C_SDA, I2C_SCL, 400000);
Serial.begin(115200);
ble.begin();
if (!bno.begin())
{
Serial.print("Ooops, no BNO055 detected ... Check your wiring or I2C ADDR!");
while (1);
}
delay(1000);
bno.setExtCrystalUse(true);
// updating range
bno.setMode(Adafruit_BNO055::OPERATION_MODE_CONFIG);
delay(1000);
write_register (0x28, 0x0A, 0b00111010);
bno.setMode(Adafruit_BNO055::OPERATION_MODE_NDOF);
delay(10000);
byte result = read_register (0x28, 0x0A, 1);
Serial.print(result);
Serial.print("\n");
Serial.print("\n");
}
/**************************************************************************/
void loop(void)
{
sensor_calibration ();
sensor_data (x_placeholder, y_placeholder);
transform_sensor_data (x_placeholder, y_placeholder, x, y);
if (ble.isConnected()) {
ble.move(x, y);
}
}
1 ответ
▲ 1
Размещение задержки в любой встроенной функции, относящейся к беспроводной радиосвязи, остановит только операции на Wi-Fi core
или core0
. Ваш основной код цикла не будет затронут задержкой, размещенной в core0
. Она остановит только беспроводные операции.
Я столкнулся с похожей проблемой, и мне потребовалось некоторое время, чтобы собрать ее воедино. Я использую глобальные переменные при передаче информации между core0
и core1
.
- Беспроводная связь работает на
core0
и - Ваш основной код выполняется на
core1
(если иное не указано в настройках).
,
@Rob Moore
Какое отношение это имеет к вопросу?, @StarCat
Смотрите также:
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- ESP32 - "Детектор Браунаута был активирован" при запуске Wi-Fi
- Питание esp32cam от аккумулятора
- Контакты RX и TX на esp32
- ESP32: отключить детектор отключения питания
Что значит "не работает"? Совсем не откладывая? Откладывать навсегда? Слишком короткая задержка? Слишком долгая задержка? И что заставляет вас думать, что delay() виновата?, @Majenko
откуда вы знаете, что функция задержки не работает? ... у вас нет никакого кода отладки, который бы проверял, что, @jsotola
Извините, что я не уточнил, что он вообще не откладывается, независимо от того, на какую сумму я его установил., @Zhelyazko Grudov
Откуда тебе знать? `Цикл () " в приведенном выше коде не использует задержку и также не имеет вывода., @PMF
Вывод-это последняя функция, которая перемещает мышь и которая начинается сразу после загрузки кода. Таким образом, нет никакой задержки между загрузкой кода и запуском функции цикла., @Zhelyazko Grudov
Должно быть, это как-то связано с тем регистром, который вы установили, или с setcrystal, или с одной из этих библиотек. Чтобы доказать это, просто загрузите простой скетч задержки и посмотрите, сработает ли он тогда., @tavis
Да, придется это сделать, мне на самом деле жаль, что я опубликовал этот вопрос, не рассмотрев его полностью вчера. Это был довольно напряженный день, с этой вишенкой на макушке., @Zhelyazko Grudov