目录
目的
黄色pwm,红色正极,棕色负极
让sg90舵机转动,就需要一个20ms的周期pwm,其中高电平在0.5-2.5ms之间
- 转动角度 高电平在一个周期内的时间
- 0° 0.5ms
- 45° 1ms
- 90° 1.5ms
- 135° 2ms
- 180° 2.5ms
代码 只有io口1是支持pwm,其他要软件pwm
#include <softPwm.h>
#include <wiringPi.h>
#include <stdio.h>
int main()
{
//初始化wiringpi
if(-1==wiringPiSetup()){
return -1;
}
//wiringpi引脚编码
int pin = 1;
//输出模式
pinMode (pin , PWM_OUTPUT);
//传统pwm模式 占空比模式
pwmSetMode (PWM_MODE_MS);
//设置时钟频率 树莓派的PWM时钟基础频率是19.2MHz
//我们把pwm分为2000分,要50hz的pwm频率,那时钟频率=19200*1000/(50*2000)=192
pwmSetClock (192);
//周期为20ms
pwmSetRange (2000);
int i = 0;
while(1)
{
i++;
pwmWrite(pin,i);
printf("%d\n",i);
delay(20);
}
return 0;
}
我测试的是100左右舵机0°。750左右180°,可能是我树莓派硬件问题,理论是50-250的,我的是100-750
编译
gcc main.c -lwiringPi
运行
sudo ./a.out