乐鑫技术交流
直播中

生龙活虎3

8年用户 763经验值
擅长:光电显示
私信 关注
[问答]

esp32想用自带的LEDPWD来驱动sg90发现没有反应,为什么?

开发环境:arduino
想用自带的LEDPWD来驱动sg90 发现没有反应Code: [Select all] [Expand/Collapse]

  • int freq = 50;
  • int channel = 7;
  • int resolution = 8;
  • const int led = 16;

  • int servo_max=180,servo_min=90;

  • int calculatePWM(int degree)
  • {
  •   const float deadZone = 6.4;
  •   const float max = 32;
  •   if (degree < 0)
  •     degree = 0;
  •   if (degree > 180)
  •     degree = 180;
  •   return (int)(((max - deadZone) / 180) * degree + deadZone);
  • }

  • void setup()
  • {
  •   Serial.begin(9600);
  •   ledcSetup(channel, freq, resolution); // 设置通道
  •   ledcAttachPin(led, channel);          // 将通道与对应的引脚连接
  • }

  • void loop()
  • {
  •   ledcWrite(channel, calculatePWM(90));
  •   delay(1000);
  •   ledcWrite(channel, calculatePWM(180));
  •   delay(1000);
  • }


回帖(1)

张虎豹

2024-6-5 16:04:02
根据您提供的信息,您正在尝试使用ESP32的LEDC(LED PWM)功能来驱动SG90舵机。但是,您发现舵机没有反应。以下是一些可能的原因和解决方案:

1. 确保您的舵机连接正确:
   - 将舵机的VCC引脚连接到ESP32的5V引脚。
   - 将舵机的GND引脚连接到ESP32的GND引脚。
   - 将舵机的信号引脚连接到ESP32的GPIO 16引脚。

2. 检查您的Arduino代码:
   - 确保您已经正确地初始化了LEDC库。在`setup()`函数中添加以下代码:
     ```cpp
     ledcSetup(channel, freq, resolution);
     ledcAttachPin(led, channel);
     ```
   - 确保您的`calculatePWM()`函数正确计算PWM值。您提供的代码片段不完整,因此请确保您的函数能够返回正确的PWM值。

3. 检查舵机是否损坏:
   - 如果您的舵机没有反应,可能是舵机本身存在问题。尝试使用另一个舵机或使用其他控制方式(例如直接连接到GPIO引脚)来测试舵机是否正常工作。

4. 检查电源:
   - 确保您的ESP32板子有足够的电源供应。如果电源不足,舵机可能无法正常工作。

5. 检查ESP32板子的固件:
   - 确保您的ESP32板子上运行的是最新版本的Arduino核心库。如果不是,请更新您的库。

综上所述,您需要检查连接、代码、舵机、电源和固件,以确定问题所在并解决。希望这些建议能帮助您解决问题。
举报

更多回帖

×
20
完善资料,
赚取积分