[6-4] PWM驱动LED呼吸灯&PWM驱动舵机&PPWM驱动直流舵机 江协科技学习笔记(28个知识点)

1

2

3

4

5

6

  

7

8


 

9

10

11重要

12

13

14

15

16

17

18

19

20改占空比

21

22

23引脚重映射

24

25

26servo.c

#include "stm32f10x.h"                  // Device header

#include "PWM.h"



/**

  * 函    数:舵机初始化

  * 参    数:无

  * 返 回 值:无

  */

void Servo_Init(void)

{

PWM_Init();                                                                        //初始化舵机的底层PWM

}



/**

  * 函    数:舵机设置角度

  * 参    数:Angle 要设置的舵机角度,范围:0~180

  * 返 回 值:无

  */

void Servo_SetAngle(float Angle)

{

PWM_SetCompare2(Angle / 180 * 2000 + 500);        //设置占空比

//将角度线性变换,对应到舵机要求的占空比范围上

}

27main.c

#include "stm32f10x.h"                  // Device header

#include "Delay.h"

#include "OLED.h"

#include "Servo.h"

#include "Key.h"



uint8_t KeyNum;                        //定义用于接收键码的变量

float Angle;                        //定义角度变量



int main(void)

{

/*模块初始化*/

OLED_Init();                //OLED初始化

Servo_Init();                //舵机初始化

Key_Init();                        //按键初始化



/*显示静态字符串*/

OLED_ShowString(1, 1, "Angle:");        //1行1列显示字符串Angle:



while (1)

{

KeyNum = Key_GetNum();                        //获取按键键码

if (KeyNum == 1)                                //按键1按下

{

Angle += 30;                                //角度变量自增30

if (Angle > 180)                        //角度变量超过180后

{

Angle = 0;                                //角度变量归零

}

}

Servo_SetAngle(Angle);                        //设置舵机的角度为角度变量

OLED_ShowNum(1, 7, Angle, 3);        //OLED显示角度变量

}

}

28

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值