在我的 ESP32 C++ 项目中,我使用
Audio.h
和 AccelStepper.h
。
不幸的是,只要音频处于活动状态,步进器就无法工作。看起来 Audio.loop()
块太长了。
示例代码:
#include <AccelStepper.h>
#include <Audio.h>
#define IN1 25
#define IN2 26
#define IN3 27
#define IN4 14
#define stepsPerRevolution 2048/60
AccelStepper motors[1] = {AccelStepper(AccelStepper::FULL4WIRE, IN1, IN3, IN2, IN4)};
Audio audio;
void setup()
{
// Some stuff to build up Wifi connection was removed here. Wifi is working.
motors[0].setMaxSpeed(stepsPerRevolution * 10); // 10 rpm
motors[0].setSpeed(stepsPerRevolution * 10);
audioController.connecttohost("https://stream.antenne.de/antenne/stream/mp3");
Serial.begin(115200);
}
void loop() {
motors[0].runSpeed();
audio.loop();
}
每当我注释掉
audio.loop()
时,步进器就会正确移动。每当我使用 audio.loop()
时,步进器移动得非常慢并且变热。
希望得到帮助。谢谢
那是因为 audio.loop() 每当调用时都会播放加载的文件,然后继续。
您可能需要创建单独的任务并在单独的任务中添加audio.loop()和步进器代码。