关于舵机一转单片机就自动复位的问题

关于舵机一转单片机就自动复位的问题

这个问题困扰了我一晚上才解决,我觉得很有必要发出来,第一是希望一些新手同志少走弯路,第二也是为了提醒自己以后不要再犯这种错误。

发现的问题及经过

1.第一个遇到的问题——舵机不转

在我昨晚使用舵机的时候,经常会发现它有时能转,有时又完全转不了,甚至有时候会乱转。比如我要它转90度,它有时完全不转,只能听到舵机内部咔咔响,只有转到位的时候才不会响。

2.第二个遇到的问题——舵机一转单片机就自动复位

在上一个问题捣鼓了半天后,舵机突然莫名其妙能转了!!!但是问题又来了。因为我把超声波模块和舵机模块一起用,想用他们两个做一个简单的实验:舵机初始的角度为0°,当超声波测量的距离小于6cm时,舵机转动90°。运行的时候,一开始测距大于6cm,当我用手靠近超声波模块直到小于6cm时,这时舵机转了90°,按正常来说的话舵机之后不会再转,但是才刚转到位,舵机又回到0°的位置!!!我重复试了几次都这样。我后来发现每次舵机自动转回0°的时候,OLED显示屏第二行会清屏,并且转回0°的行为对应着函数里 Servo_SetAngle(0); 这一步。所以我认为单片机很有可能是自动复位了。但是每次舵机一转为什么就复位?

以下时我当时main函数的代码。

int main(void)

{

OLED_Init();

Timer_Init();

HCSR04_Init();

Servo_Init();

OLED_ShowString(1,1,"distance:");

Servo_SetAngle(0);

while(1)

{

int distance = Get_Distance();

OLED_Clear_Part(2,1,16); //将OLDE屏第2行清屏

OLED_ShowNum(2, 1,distance,numlen(distance)); //显示单位为毫米的距离结果

OLED_ShowString(2,

相关推荐

wow英雄之血多久刷新一次
365bet中文网

wow英雄之血多久刷新一次

📅 08-15 👁️ 3060
血吸虫病
365bet中文网

血吸虫病

📅 08-10 👁️ 7902