栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

树莓派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 division
import sys, select, termios, tty


import 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 key

def 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 = 0
channel1 = 15
channel2 = 14

while 1:
    key = getKey()

    if key == 'a':
        while True:            
            beangle += 2.5
            if beangle >= 180:
                beangle = 180
            set_servo_angle(channel1,beangle)
            set_servo_angle(channel2,beangle)
            key = getKey()
            if (key != 'a'):
                break
    if key == 'd':
        while True:
            beangle -= 2.5
            if beangle <= 0:
                beangle = 0
            set_servo_angle(channel1,beangle)
            set_servo_angle(channel2,beangle)
            key = getKey()
            if (key != 'd'):
                break
    if 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博客

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329442.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号