目录

一、PWM简介

二、树莓派如何输出PWM(主要介绍软件模拟PWM的方法)

第一种:硬件PWM---------->(精确的PWM控制)

第二种:软件模拟PWM

(1)查看开发手册  树莓派wiringPi库详释(借鉴)

(2)树莓派呼吸灯代码(软件模拟PWM)

(3)编译(注意:链接库-lpthread -lwiringPi)

三、树莓派控制舵机旋转角度

(一)舵机SG90介绍

(二)占空比与舵机旋转角度关系示意图

四、树莓派与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 29int 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     29int 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(num){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派舵机相关推荐

  1. Kali Linux Web 渗透测试— 第十二课-websploit

    Kali Linux Web 渗透测试- 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试- 第十二课-websploit..................... ...

  2. C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值

    C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值 using System; using System.Collections.G ...

  3. NeHe OpenGL第三十二课:拾取游戏

    NeHe OpenGL第三十二课:拾取游戏 拾取, Alpha混合, Alpha测试, 排序: 这又是一个小游戏,交给的东西会很多,慢慢体会吧   欢迎来到32课. 这课大概是在我所写作已来最大的一课 ...

  4. 《SQL必知必会》学习笔记——第十二课 连结表

    第十二课 连结表 一.创建连结 SELECT inf.id, age, rank FROM inf,score WHERE inf.id = score.id; 注意 WHERE inf.id = s ...

  5. 量化交易 第十二课 因子数据处理之市值中性化

    第十二课 因子数据处理之市值中性化 概述 市值影响 怎么去除市值影响 回归法 简介 流程分析 代码实现 概述 众所周知, 行业和市值是两个十分显著对因子有影响力的因素. 在进行截面回归判断每个单因子的 ...

  6. OpenGL教程翻译 第二十二课 使用Assimp加载模型

    第二十二课 使用Assimp加载模型 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) 背景 到现在为止我们都在使用手动生成的模型.正如你所想的,指明每个顶点 ...

  7. 手把手教你读财报---银行业---第十二课

    第十二课  风险加权资产 风险的种类: 银行是经营风险的,巴塞尔委员会根据银行的业务特征和风险诱发原因,将银行面临的风险划分为:信用风险.市场风险.操作风险.流动性风险.法律风险.声誉风险.国别风险以 ...

  8. python血条游戏代码_零基础快速学十二课Python完整游戏代码,使用「格式符%」来处理...

    十二课Python不同数据类型的拼接方式,使用[格式符%]来处理 不过它还没有全部解决:打印出每局结果,三局两胜打印最终战果.这就是版本3.0需要做的事情. 打印战果,三局两胜. 对比2.0版本,在3 ...

  9. OpenGL教程翻译 第十二课 透视投影

    第十二课 透视投影 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) 背景 在这一节中我们将会介绍如何在保持深度外观的情况下将三维世界中的物体投影到二维平面上 ...

  10. 实践数据湖iceberg 第十二课 catalog是什么

    系列文章目录 实践数据湖iceberg 第一课 入门 实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式 实践数据湖iceberg 第三课 在sqlclient中,以sql ...

最新文章

  1. 2022-2028年中国乙酸钴行业发展现状调研及市场前景规划报告
  2. Ansible06-管理roles
  3. ACCP7.0-S2-复习自测-15测试分析
  4. Java 8 Friday Goodies:SQL ResultSet流
  5. easyUI.checkForm
  6. Visual Studio中的第一个Django-Python应用程序
  7. windows登录linux免密码,Windows使用SSH Secure Shell实现免密码登录Linux的方法以及使用scp2命令免密码下载文件...
  8. JavaScript or JQuery 获取服务器时间
  9. 【翻译】Emmet(Zen Coding)官方文档 之七 一览表
  10. SqlCommand.ExecuteReader 方法
  11. 梯度消失与梯度爆炸---解决方案(二)--杀手锏
  12. 速达3000怎么找不到服务器,速达软件服务器无法启动怎么办?
  13. v50进9008救砖
  14. UiAutomator2—By、BySelector
  15. 迭代法求根c语言程序对数方程,【实验一】方程求根:牛顿迭代法
  16. 2019-05-15过了这么久我才写了这么点Hhhhhhhh今天也没有刷题我真的不是偷懒啊只是想赶紧弄完老师给的任务今天写的也很匆忙一会儿回去给姥姥姥爷打个电话然后买个晚餐回宿舍洗澡找妈妈视频啦啦啦了
  17. 根据经纬度定位百度地图(带图片的)
  18. 小明医声发布,看AI技术秀得飞起
  19. 二维条码防伪技术原理及应用简介
  20. ios 自定义拍照页面_iOS开发笔记:自定义相机拍照

热门文章

  1. VCL组件DevExpress VCL v21.2 - PDF Viewer、图像列表编辑器升级
  2. 多个pdf怎么合并成一个pdf?
  3. java 计算8+88+888+......前12项之和
  4. Android 车载应用开发与分析(5) - CarLauncher(一)
  5. 点阵字模生成原理与方法
  6. Python:从UCI数据库下载数据集到内存
  7. jsmind 线条_使用jsMind显示思维导图
  8. maya怎么导出abc格式_maya导入abc文件到UE4
  9. 数字孪生港珠澳大桥:大湾区综合管理信息系统
  10. 剑指Offer——完美+今日头条笔试题+知识点总结