树莓派(raspberryPi)通过wiringpi C库控制sg90舵机
来源:互联网 发布:matlab怎么复制矩阵 编辑:程序博客网 时间:2024/05/16 00:25
在网上一直没找到比较容易看懂的wiringpi C语言的pwm控制代码,于是便查了资料与大家共享一下。
SG90一共三根线,红线接5V电源,棕线GND。黄线为数据控制线,该线接到GPIO上,这里我们是wiringpi模式的pin 1~8。 SG90 脉冲周期为20毫秒(millisecond) 不是20微秒(Microsecond),两者差1000倍呢!也就是说最多1秒钟内可以转动50次,但是考虑到每次转动还要耗时,所以实际达不到50次。PWM控制信号周期20ms,脉宽0.5ms-2.5ms对应的角度-90到+90度,范围180度(3度左右偏差),当脉宽1.5ms时舵机在中立点(0度),我们直接用python的GPIO提供的PWM控制。脉宽0.5ms-2.5ms 对应的占空比为2.5% - 12.5% . 理论上,10%的空间可以提供180度的线性分割。我个人喜欢把sg90舵机的角度定义为从0度到180度。
代码如下,小白编程,格式混乱勿怪。
//file name=sg90.c#include <stdio.h>#include <errno.h>#include <string.h>#include <stdlib.h>#include <wiringPi.h>#include <softPwm.h>#define RANGE 200 //1 means 100 us , 200 means 20 ms 1等于100微妙,200等于20毫秒 int main (int argc, char** argv){ if( argc != 3){ //该程序带有两个参数 printf("usage: ./command <pin> <degree>\n"); exit(0); } int pin; pin=atoi(argv[1]); //第一个参数为所要控制的引脚wiringpi编号 int i; int degree; if( !(pin>=0&&pin<=8)){ //第二个参数为需要控制舵机转动的角度 printf("only setup pin 1 to 8\n"); exit(0); } if( !(atoi(argv[2])>=0&&atoi(argv[2])<=180)){ printf("degree is between 0 and 180\n"); exit(0); } degree=5+atof(argv[2])/180.0*20.0; wiringPiSetup () ; //wiringpi初始化 softPwmCreate (pin, 15, RANGE) ; //创建一个使舵机转到90的pwm输出信号 delay(1000); for (i = 0 ; i < 2 ; i++) { softPwmWrite(pin,5); //将pwm输出复写为使舵机转到0 delay(1000); softPwmWrite(pin,degree);//再次复写pwm输出 delay(1000); } softPwmWrite (pin, 15) ; exit(0);}
编译代码:gcc sg90.c -o sg90 -lwiringPi -lwiringPiDev
运行编译出的程序: sudo ./sg90 1 180 第一个参数是wiringpi引脚编号 ,第二个参数是想要控制舵机偏转的角度。
此时舵机的控制线应连接前方所写wiringpi编号对应引脚。
阅读全文
0 0
- 树莓派(raspberryPi)通过wiringpi C库控制sg90舵机
- 树莓派控制SG90舵机
- 树莓派控制SG90舵机
- 驱动SG90舵机运算
- 树莓派-wiringPi-wiringPi-C的i2c库使用
- 使用WiringPi控制树莓派(初步解读开发文档)
- Arduino通过串口控制舵机角度实验
- 树莓派wiringPi库详解
- 树莓派安装wiringPi库
- arduino-舵机控制(示例)
- 树莓派使用wiringPi控制LED灯
- 舵机控制
- 舵机控制
- 舵机控制
- 舵机控制
- 舵机控制
- 树莓派安装wiringPi开发库
- ROS机器人Diego 1#制作(十五)机械臂的控制---通过键盘控制机械臂舵机
- Spring整合Junit4进行单元测试
- A. Chess Tourney【Educational Codeforces Round 27】
- springMVC拦截器
- 【物联网云端对接-4】通过MQTT协议与百度云进行云端通信
- PS打造金色色调
- 树莓派(raspberryPi)通过wiringpi C库控制sg90舵机
- Redis 与 数据库处理数据的两种模式
- Discuz!论坛后台无法登陆,点击登陆像刷新-iP变化问题
- 浏览器无法打开百度首页,却可以打开其他网页解决方法
- tcp/udp区别
- Hadoop集群(第6期)_WordCount运行详解
- 常用字符串函数
- 删除CentOS更新后的旧内核
- python opencv入门 Hough直线变换(27)