当前位置: 首页 > news >正文

python+adafruit_pca9685 测试舵机存储当前角度

 测试代码如下:

# -*- coding: UTF-8 -*-
import time
from board import SCL, SDA
import busio
from adafruit_pca9685 import PCA9685
from adafruit_motor import servo'''
测试控制1块驱动板或者多块
pip install Adafruit-PCA9685 --break-system-packages
pip install adafruit-circuitpython-motor  --break-system-packages
'''# 引入i2c
i2c = busio.I2C(SCL, SDA)
pca = PCA9685(i2c, address=0x40)  # 地址可以修改  默认0x40
pca.frequency = 50# 用于存储最后转动到的角度
last_angle = 0def duoji_zx(channel_num, start_angle, end_angle, speed):'''舵机正向旋转控制:0度到180度,如果是360度的舵机也可以:param channel_num: 舵机编号:param start_angle: 舵机转动 开始角度:param end_angle: 舵机转动 结束角度:param speed: 转动的速度,秒为单位:return:'''servo_o = servo.Servo(pca.channels[channel_num])# 设置脉冲宽度 500到2500是正常的 这个可以自己调整 不设置默认只到135度servo_o.set_pulse_width_range(min_pulse=500, max_pulse=2500)for angle in range(start_angle, end_angle):# print(angle)global last_anglelast_angle=angleservo_o.angle = angletime.sleep(speed)def duoji_fx(channel_num, start_angle, end_angle, speed):'''舵机正向旋转控制:0度到180度,如果是360度的舵机也可以:param channel_num: 舵机编号:param start_angle: 舵机转动 开始角度:param end_angle: 舵机转动 结束角度:param speed: 转动的速度,秒为单位:return:'''servo_o = servo.Servo(pca.channels[channel_num])# 设置脉冲宽度 500到2500是正常的 这个可以自己调整 不设置默认只到135度servo_o.set_pulse_width_range(min_pulse=500, max_pulse=2500)# servo_o.angle = 0  # 转动前,先重置为0for angle in range(start_angle, end_angle, -1):# 先0度# print(angle)global last_anglelast_angle = angleservo_o.angle = angletime.sleep(speed)'''
测试通过变量存储舵机当前角度,方便下次转动舵机时从当前角度的基础上进行转动
'''
servo_o = servo.Servo(pca.channels[0])
servo_o.angle = 0  # 每次启动脚本时,先将舵机角度重置为0while True:print("---当前舵机角度为:",last_angle)msg1=input("请选择:低头(1)  抬头(2)  结束(3)  :")if int(msg1)==1:msg2=input("请输入要转动的角度:")duoji_zx(0,last_angle,int(msg2),0.03)elif int(msg1)==2:msg2 = input("请输入要转动的角度:")duoji_fx(0, last_angle, int(msg2), 0.03)elif int(msg1)==3:servo_o.angle = 0pca.deinit()print("-----------结束任务")break

运行效果:

相关文章:

  • 中国区域250米归一化植被指数数据集(2000-2023)
  • 数据库3,
  • 前端Ui设计工具
  • BP 算法探秘 :神经网络的幕后引擎
  • 单值映射、多值映射
  • 单点登录(双token)的简单总结
  • C++ 类与对象(中)—— 默认成员函数与运算符重载的深度解析:构造函数,析构函数,拷贝构造函数,赋值运算符重载,普通取地址重载,const取地址重载
  • Java使用微信云服务HTTP API操作微信云开发数据库
  • WebGIS面试题目整合资料
  • 《TVM模式匹配实战:从DFPatternNode到DFPattern的高级用法》
  • PPIO X OWL:一键开启任务自动化的高效革命
  • Codeforces Round 1021 (Div. 2) D. Baggage Claim(建图)
  • PLC在仪表控制系统中的应用
  • 代码随想录算法训练营第60期第二十天打卡
  • Python爬虫(6)静态页面解析实战:BeautifulSoup与lxml(XPath)高效提取数据指南
  • 能源行业数字化转型:利用大数据与人工智能提升效率与可持续性
  • MCP Server On FC 之旅1: MCP 协议的深度解析与云上适配最佳实践
  • Docker 部署 flink1.19.2
  • Golang 学习指南
  • 基于ArcGIS的洪水淹没分析技术-洪水灾害普查、风险评估及淹没制图中的实践技术
  • 亚马逊拟为商品标注“关税成本”,特朗普致电贝索斯讨说法
  • 李铁案二审今日宣判,押送警车已进入法院
  • 五一小长假,带着小狗去上海音乐厅
  • 2025上海车展 | 当智驾不再让人兴奋,汽车智能化暗战升级
  • 宁夏民政厅原厅长欧阳艳已任自治区政府副秘书长、办公厅主任
  • 证券时报:“好房子”标准即将全面落地,购房者有哪些新期待