树莓派Ubuntu18.04使用pigpio库产生PWM波实现舵机控制

本文介绍了如何利用树莓派的pigpio库生成PWM波,通过遥控器信号控制舵机1,2的角度,并实现舵机3的连续旋转与停止。重点讲解了pigpio库的使用方法和舵机角度映射技术。

树莓派使用pigpio库产生PWM波实现舵机控制

一:pigpio库简介
pigpio是一个用于树莓派的库,它允许控制树莓派的通用输入输出(GPIO)引脚。
它的下载与安装步骤请参考:http://abyz.me.uk/rpi/pigpio/download.html
它提供了c语言风格与python语言风格的库函数,我们可以调用相关的库函数实现跟GPIO相关的操作。
与PWM操作相关的几个函数的详细解释可以参考http://abyz.me.uk/rpi/pigpio/python.html#get_PWM_frequency

二:产生PWM波相关的几个库函数
更详细的解释请参考:
http://abyz.me.uk/rpi/pigpio/python.html
在这里插入图片描述
三:具体的实现过程
此处实现了使用遥控器控制舵机1,2的旋转角度,与舵机3的连续旋转/反向旋转/与停止。
关于如何获取遥控器信号可参考上一篇博客。

#!/usr/bin/env python

#导入相关的库文件
import rospy
from std_msgs.msg import String
from geometry_msgs.msg import Twist
import sys, select, termios, tty
#导入pigpio库
import pigpio
import time

#建立实体化对象
pi=pigpio.pi()

#tick_0用于存储低电平捕获的时间戳
tick_0=[None,None,None]
#tick_1用于存储高电平捕获的时间戳
tick_1=[None,None,None]
#diff用于存储脉宽
diff=[1500,None,1500]

#定义回调函数
def in_callback(argu,gpio,level,tick):
	#如果是低电平,则说明下降沿到来,通过数组diff将两次捕获的时间差存储起来
	if level==0:
		#存储此次时间戳
	    tick_0[argu]=tick
	    #如果高电平捕获的时间戳不为0
	    if tick_1[argu] is not None:
	    
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值