当前位置: 首页 > 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

运行效果:

http://www.xdnf.cn/news/170803.html

相关文章:

  • 知识体系_数据量纲化处理方式
  • PWN基础-利用格式化字符串漏洞泄露canary结合栈溢出getshell
  • 神经网络笔记 - 神经网络
  • 东田数码科技前端面经
  • 运算符分为哪几类?哪些运算符常用作判断?简述运算符的优先级
  • 电池的寿命
  • 参数规模:衡量大语言模型体量的标尺
  • 【Java面试笔记:进阶】23.请介绍类加载过程,什么是双亲委派模型?
  • NEPCON China 2025 | 具身智能时代来临,灵途科技助力人形机器人“感知升级”
  • Spring MVC深度解析:从原理到实战
  • 进程与线程-----C语言经典题目(8)
  • Net版本Spire.doc 最新版去水印
  • OpenCV进阶操作:图像金字塔
  • Django(快速上手版)
  • IDEA中使用Git
  • 物联网相关
  • 【仿Mudou库one thread per loop式并发服务器实现】服务器边缘测试+性能测试
  • 强制缓存vs协商缓存
  • pycharm无法创建venv虚拟环境
  • Web安全:威胁解析与综合防护体系构建
  • 快速排序及其在Unity游戏开发中的应用
  • Node.js API 安全的主要策略:最佳实践
  • 面试记录1-春招补录0427
  • 【Hive入门】Hive基础操作与SQL语法:DML操作全面解析
  • FastAPI + Redis Pub/Sub + WebSocket 组合解决方案的详细介绍
  • Reverse-WP记录6
  • Taro on Harmony :助力业务高效开发纯血鸿蒙应用
  • 云计算市场的重新分类研究
  • 华为 MRAG:多模态检索增强生成技术论文阅读
  • 用Node.js施展文档比对魔法:轻松实现Word文档差异比较小工具,实现Word差异高亮标注(附完整实战代码)