当前位置: 首页 > 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的洪水淹没分析技术-洪水灾害普查、风险评估及淹没制图中的实践技术
  • 最近这75年,谁建造了上海?
  • 央行副行长:增强外汇市场韧性,坚决对市场顺周期行为进行纠偏
  • 传染病防治法修订草案提请三审,拟加强医疗机构疾控能力建设
  • 三大猪企去年净利润同比均较大幅度增长,资产负债率齐降
  • 新城市志|中国消费第一城,迎来“补贴力度最大”购物节
  • 敲定!今年将制定金融法、金融稳定法