2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 树莓派4B使用PCA9685控制舵机

树莓派4B使用PCA9685控制舵机

时间:2019-03-14 03:04:26

相关推荐

树莓派4B使用PCA9685控制舵机

一.IIC通信

在raspi-config中的interface选项打开IIC通信

二.下载Adafruit_PCA9685包

pip3 install Adafruit_PCA9685

也可以去github或者gitee搜索adafruit_pca9685查看源码和demo

注:

这里还可以选用SERVO DRIVER HAT这一控制舵机的板子

可参考(17条消息) 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码_袁六加.的博客-CSDN博客

三.接线

根据本人的实际情况,当仅仅取树莓派的3.3V电压时舵机是不会动的,因此需要一个电源模块供电(与pca板子上的绿色柱相连)

四.编写程序

(使用a d 控制舵机转角)

# -*- coding: utf-8 -*-#键盘控制舵机转动from __future__ import divisionimport sys, select, termios, ttyimport time# Import the PCA9685 module.import Adafruit_PCA9685#获取键盘事件def getKey():settings = termios.tcgetattr(sys.stdin)tty.setraw(sys.stdin.fileno())rlist, _, _ = select.select([sys.stdin], [], [], 0.1)if rlist:key = sys.stdin.read(1)else:key = ''termios.tcsetattr(sys.stdin, termios.TCSADRAIN, settings)return keydef set_servo_angle(channel, angle):#输入角度转换成12^精度的数值date=int(4096*((angle*11)+500)/20000)#进行四舍五入运算 date=int(4096*((angle*11)+500)/(20000)+0.5) pwm.set_pwm(channel, 0, date)pwm = Adafruit_PCA9685.PCA9685()pwm.set_pwm_freq(50)beangle = 0channel1 = 15channel2 = 14while 1:key = getKey()if key == 'a':while True: beangle += 2.5if beangle >= 180:beangle = 180set_servo_angle(channel1,beangle)set_servo_angle(channel2,beangle)key = getKey()if (key != 'a'):breakif key == 'd':while True:beangle -= 2.5if beangle <= 0:beangle = 0set_servo_angle(channel1,beangle)set_servo_angle(channel2,beangle)key = getKey()if (key != 'd'):breakif key == 'q':break

自此就可以通过输入转角或者使用键盘控制舵机了。

报错IOError: [Errno 121] Remote I/O error:

1.仔细检查接线有没有错误

2.参考(17条消息) 树莓派4B使用 Adafruit_PCA9685 报错IOError: [Errno 121] Remote I/O error解决办法_Black__Jacket的博客-CSDN博客

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。