第十二课:树莓驱动SG90派舵机
2021/10/21 23:14:07
本文主要是介绍第十二课:树莓驱动SG90派舵机,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、PWM简介
脉宽调制(PWM)是指用微处理器的数字输出来对模拟电路进行控制,是一种对模拟信号电平进行数字编码的方法
PWM(Pulse Width Modulation):脉冲宽度调制
脉冲:方波,频率(freq)
宽度:高电平的宽度,占空比(duty)
周期:CYCLE
占空比:高电平的占比(100&中占百分几)
占空比静态示意图:
占空比动态示意图:
二、树莓派如何输出PWM(主要介绍软件模拟PWM的方法)
wiringPi两种方式产生PWM
第一种:硬件PWM---------->(精确的PWM控制)
第二种:软件模拟PWM
(1)查看开发手册 树莓派wiringPi库详释(借鉴)
头文件:#include<softPwm.h> | ||
int softPwmCreate (int pin, int initialValue, int pwmRange) | pin:设置为软件PWM输出引脚 initalValue:引脚输出的初始值 pwmRange:PWM值的范围上限 建议使用100. 返回:0表示成功。 | 创建一个模拟的PWM输出引脚 |
void softPwmWrite (int pin, int value) | pin:PWM输出引脚 value:PWM引脚输出的值 | 输出的PWM值 |
(2)树莓派呼吸灯代码(软件模拟PWM)
#include <stdio.h> #include <wiringPi.h> #include <softPwm.h> #define LED 29 int main(void) { int i = 0; if(wiringPiSetup() == -1) { printf("gpio error!\n"); return -1; } softPwmCreate(LED, 0, 100); //创建一个模拟的PWM输出引脚 while (1) { for (i=0; i<100; i++) { softPwmWrite(LED, i);//输出的PWM值 delay(20); } for(i=100;i>0;i--) { softPwmWrite(LED,i);//输出的PWM值 delay(20); } } return 0; }
(3)编译(注意:链接库-lpthread -lwiringPi)
pi@raspberrypi:~/raspberry/SG90 $ ls a.out LED.c pi@raspberrypi:~/raspberry/SG90 $ gcc LED.c -lpthread -lwiringPi pi@raspberrypi:~/raspberry/SG90 $
三、树莓派控制舵机旋转角度
(一)舵机SG90介绍
(二)占空比与舵机旋转角度关系示意图
20ms脉冲周期 | 高电平时间 | 舵机旋转角度 |
0.5ms | 0度 | |
1.0ms | 45度 | |
1.5ms | 90度 | |
2.0ms | 135度 | |
2.5ms | 180度 |
动态示意图
四、树莓派与SG90舵机连接示意图
五、软件代码
根据公式:PWMfreq = 1 x 10^6 / (100 x range)
,要得到PWM频率为50Hz,则range为200,即周期分为200步。
#include <wiringPi.h> #include <softPwm.h> #include <stdio.h> #define PWM_PIN 29 int main(void) { if(wiringPiSetup() == -1) { printf("gpio error!\n"); return -1; } pinMode(PWM_PIN, OUTPUT); softPwmCreate(PWM_PIN, 0, 200); int num ; while(1) { scanf("%d",&num); switch() { case 45: softPwmWrite(PWM_PIN, 20); break; case 90: softPwmWrite(PWM_PIN, 25); break; defualt: break; } } return 0 ; }
编译(注意:链接库-lpthread -lwiringPi)
pi@raspberrypi:~/raspberry/SG90 $ ls a.out pi@raspberrypi:~/raspberry/SG90 $ gcc LED.c -lpthread -lwiringPi pi@raspberrypi:~/raspberry/SG90 $
这篇关于第十二课:树莓驱动SG90派舵机的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21订单系统资料入门教程:轻松管理你的订单
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java订单系统资料:新手入门教程与实战指南
- 2024-09-21Java管理系统资料入门教程
- 2024-09-21从零开始学习Java监控系统资料
- 2024-09-21Java就业项目资料:新手入门的必备教程
- 2024-09-21Java全端资料:初学者指南
- 2024-09-21Java全栈资料入门教程及资源汇总
- 2024-09-21Java日志系统资料入门教程