【发布时间】:2017-05-09 13:08:55
【问题描述】:
我尝试使用 GPIO 引脚 18 上的 PWM 驱动带有 Raspberry PI 的伺服器,我按照如下所示连接了设置。
当我驱动伺服时,我可以毫无问题地做到这一点,我使用的命令如下所示。
gpio -g mode 18 pwm
gpio pwm-ms
gpio pwmc 192
gpio pwmr 2000
gpio -g pwm 18 150
gpio -g pwm 18 200
这很好,可以毫无问题地到达该位置,但是当我尝试使用如下所示的 Wiringpi 对 C 程序执行相同操作时。
#include <wiringPi.h>
#include <stdio.h>
int main (void)
{
printf ("Raspberry Pi wiringPi test program\n");
wiringPiSetupGpio();
pinMode (18, PWM_OUTPUT) ;
pwmSetMode (PWM_MODE_MS);
pwmSetRange (2000);
pwmSetClock (192);
pwmWrite(18,150);
delay(1000);
pwmWrite(18,200);
return 0;
}
程序和树莓派 chrash 所以我必须重新启动它们有没有人知道我做错了什么以及如何解决这个非常令人沮丧的问题?
【问题讨论】:
-
您可能需要某种方式的瞬态和 ESD 保护。加入一些电压略高于 PWM 的 TVS 二极管和一些串联电阻。但这是electronics.stackexchange.com 的主题。哦,还有raspberrypi.stackexchange.com。
-
哦,是的,我忘了我要把它放在那里:p
-
您是否阅读了wiringPiSetupGpio 的手册? 这和上面的一样,但是它允许调用程序直接使用Broadcom GPIO pin编号而不需要重新映射。 同上,这个函数需要以 root 权限调用,并注意某些 引脚与版本 1 到版本 2 板不同。
-
但是为什么当我在 c 中使用wiringpi 来使带有wiringpi 的LED 闪烁时它会很糟糕我只是在使用PWM 时遇到问题
-
即使在最新版本的 WiringPi 上,PWM 功能也需要您以 root 权限(即 sudo)运行程序。因此,您遇到了崩溃/重启问题。要绕过 sudo 要求,您需要使用数字电位器或数模转换器,而不是内置 PWM 功能。
标签: c raspberry-pi3 pwm servo wiringpi