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
运行效果:
相关文章:
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 i…...
视觉/深度学习/机器学习相关面经总结(2)(持续更新)
目录 1、跨模态对齐的方案2、位置编码方式1. **正弦和余弦位置编码(Sinusoidal Positional Encoding)**2. **可学习的位置编码(Learnable Positional Encoding)**3. **相对位置编码(Relative Positional Encoding&…...
缓存并发更新的挑战
缓存并发更新的挑战 1. 引言:并发更新的挑战2. 并发场景下的常见“坑”最后写入胜出 (Last-Write-Wins)脏读 (Dirty Read)丢失更新 (Lost Update)不可重复读 (Non-repeatable Read)幻读 (Phantom Read)写偏斜 (Write Skew)缓存与数据库不一致分布式系统中的时序问题…...
LeetCode题解1297. 子串的最大出现次数
(好久没写题解了,忙着学ai去了) 先来看题目 很显然,题目就是要我们在给定的字符串中找到一个满足要求的连续子串。 首先,要求子串中不同字母的数目得小于等于maxLetters,我们可以用一个DifLettsers函数来…...
零基础小白如何上岸数模国奖
零基础小白如何上岸数模国奖 我自己本人第一次参加数模国赛顺利上岸国奖,当然那段经历也是比较痛苦了,差不多也是从当年四月开始接触数学建模,第一次参加妈妈杯成绩并不理想,后面不断参加数模比赛进行模拟,最后顺利上岸…...
Redux-Saga vs Redux-Thunk
Redux-Saga与Redux-Thunk对比 #mermaid-svg-zbDYIbzoVqlMJXiE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zbDYIbzoVqlMJXiE .error-icon{fill:#552222;}#mermaid-svg-zbDYIbzoVqlMJXiE .error-text{fill:#55222…...
Win11 配置 Git 绑定 Github 账号的方法与问题汇总
目录 一、创建 Github 项目库(远程仓库)二、配置安装好的 Git1. 设置用户信息2. 查看已配置的信息3. 建立本地仓库4. Git 常用命令速查表 三、配置 SSH 公钥1. 生成 ssh key出现的问题 2. 启动 ssh-agent 并添加秘钥3. 在 Github 上绑定 ssh 公钥出现的问…...
李臻20242817_安全文件传输系统项目报告_第9周
安全文件传输系统项目报告(第 9 周) 1. 代码链接 Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file 代码结构说明: project-root/├── src/ # 源代码目录│ ├── main.c # 主程序入口│ ├…...
OceanBase TPCC测试常见报错汇总
OceanBase TPCC测试常见报错汇总 报错1:加载测试数据时创建tablegroup失败报错2:加载测试数据时执行超时报错3:加载测试数据时funcs.sh函数找不到报错4:加载数据时报错超过租户内存上限办法一:增加租户内存办法二:调高转储线程数办法三:调整MemStore内存占比和冻结触发阈…...
文心一言开发指南06——千帆大模型平台新手指南
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 千帆大模型平台为新手用户提供了一个全面的入门指南,以便用户能够快速熟悉平台的操作和功能。千帆大模型平台通过提供详细的新手指南,确保用户能够顺…...
解决SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption faile的问题
问题描述: 在pip安装第三方库时,出现SSL的问题。 传输层安全性协议(TLS)及其前身安全套接层(SSL)是现在的 HTTPS 协议中的一种安全协议,目的是为互联网通信提供安全及数据完整性保障。而较新版…...
Clang中ext_vector_type和address_space __attribute__的使用
Clang中ext_vector_type和address_space __attribute__的使用 一.背景二. 关键概念详解三.示例代码与验证四. 总结 一.背景 在使用 Clang 编译可执行程序时,遇到类似下面的链接错误: undefined reference to atomic_add(int volatile AS4*, int) undef…...
echarts自定义图表
普通柱状图 自定义柱状图 实现思路 4个图层 背景 边框实体 内部透明地步透明间隙红色柱形数据数据使用自定义字体倾斜柱形上方扁平矩形矩形颜色透明 label字体颜色和背景色相同实现矩形块 上下靠padding实现 向下 paddingBottom使用负数 完整代码 <!DOCTYPE html> <…...
【应用密码学】实验二 分组密码(2)
一、实验要求与目的 1) 学习AES密码算法原理 2) 学习AES密码算法编程实现 二、实验内容与步骤记录(只记录关键步骤与结果,可截图,但注意排版与图片大小) 字符串加解密 运行python程序,输入…...
【深度学习】多头注意力机制的实现|pytorch
博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: Yaoyao2024往期回顾:【深度学习】注意力机制| 基于“上下文”进行编码,用更聪明的矩阵乘法替代笨重的全连接每日一言🌼: 路漫漫其修远兮,吾…...
OceanBase数据库磁盘空间管理
OceanBase数据库磁盘空间管理 日志盘空间管理日志盘容量参数日志盘空间满应急处理 数据盘空间管理数据盘容量参数数据文件自动扩展数据盘空间满应急处理表占用的磁盘空间 日志盘空间管理 日志盘容量参数 🐯 与日志盘redo_dir相关的四个重要参数: log_…...
自然语言处理之机器翻译:Statistical Machine Translation(SMT)的评估方法解析与创新实践
## 机器翻译与评估的重要性 机器翻译(Machine Translation, MT)作为自然语言处理(NLP)的核心任务之一,旨在通过计算机实现跨语言的信息传递。随着全球化进程加速,机器翻译在商业、科研、社交等领域的应用愈发广泛。然而,翻译质量直接决定了其实际价值,因此**翻译质量…...
数据集下载(AER 和causaldata R包)
1.AER #install.packages("AER") library(AER)# 引用R包 citation("AER") # 参考文献:Kleiber, Christian, and Achim Zeileis. Applied econometrics with R. Springer Science & Business Media, 2008.# 查看有哪些数据集 data(package …...
【Linux系统】详解Linux权限
文章目录 前言一、学习Linux权限的铺垫知识1.Linux的文件分类2.Linux的用户2.1 Linux下用户分类2.2 创建普通用户2.3 切换用户2.4 sudo(提升权限的指令) 二、Linux权限的概念以及修改方法1.权限的概念2.文件访问权限 和 访问者身份的相关修改(…...
Go语言--语法基础4--基本数据类型--字符串类型
在 Go 语言中,字符串也是一种基本类型。相比之下, C/C 语言中并不存在原 生的字符串类型, 通常使用字符数组来表示,并以字符指针来传递。 Go 语言中字符串的声明和初始化非常简单,举例如下: var str st…...
分布式GPU上计算长向量模的方法
分布式GPU上计算长向量模的方法 当向量分布在多个GPU卡上时,计算向量模(2-范数)需要以下步骤: 在每个GPU上计算本地数据的平方和跨GPU通信汇总所有平方和在根GPU上计算总和的平方根 实现方法 下面是一个完整的CUDA示例代码,使用NCCL进行多…...
项目班——0422——日志
...
【音视频】音频编码实战
FFmpeg流程 从本地⽂件读取PCM数据进⾏AAC格式编码,然后将编码后的AAC数据存储到本地⽂件。 示例的流程如下所示。 关键函数说明: avcodec_find_encoder:根据指定的AVCodecID查找注册的编码器。avcodec_alloc_context3:为AVCod…...
Git Bash 下使用 SSH 连接出现 “Software caused connection abort” 问题
目录 一、检查网络环境和防火墙设置(失败)二、尝试使用 GitHub 的备用 SSH 端口 443(成功)三、检查 SSH Key 是否被正确加载四、检查是否多个 SSH 进程干扰或者服务异常五、使用 HTTPS 方式临时解决(非 SSH)…...
K8S Pod 常见数据存储方案
假设有如下三个节点的 K8S 集群: k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、理论介绍 1.1、Volumes 卷 Kubernetes 的卷是 pod 的⼀个组成部分,因此像容器⼀样在 pod 的规范(pod.spec&#x…...
JavaScript 模板字符串:更优雅的字符串处理方式
什么是模板字符串? 模板字符串(Template Literals)是 ES6(ES2015)引入的一种新的字符串表示方式,它提供了更强大、更灵活的字符串拼接功能。与传统的字符串使用单引号()或双引号&am…...
DeepSeek智能时空数据分析(五):基于区域人口数量绘制地图散点-大模型搜集数据NL2SQL加工数据
序言:时空数据分析很有用,但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要,然而,三大挑战仍制约其发展:技术门槛高,需融合GIS理论、SQL开发与时空数据库等多领域知识;空…...
PostSwigger 的 CSRF 漏洞总结
本文所提供的关于 web 安全的相关信息、技术讲解及案例分析等内容,仅用于知识分享与学术交流目的,旨在提升读者对 web 安全领域的认知与理解。以下仅仅是作者对 PostSwigger Web 安全的知识整理和分享,严禁任何非法犯罪活动。 限制 CSRF 的三…...
vue项目页面适配
vue项目页面适配 目的:结合动态设置根字体大小的脚本(如通过 JavaScript 监听屏幕尺寸变化),实现页面元素在不同设备上的自适应缩放 1、安装postcss-pxtorem ### 若项目未集成 postcss,需同步安装: npm …...
AI-Browser适用于 ChatGPT、Gemini、Claude、DeepSeek、Grok的客户端开源应用程序,集成了 Monaco 编辑器。
一、软件介绍 文末提供程序和源码下载学习 AI-Browser适用于 ChatGPT、Gemini、Claude、DeepSeek、Grok、Felo、Cody、JENOVA、Phind、Perplexity、Genspark 和 Google AI Studio 的客户端应用程序,集成了 Monaco 编辑器。使用 Electron 构建的强大桌面应用程序&a…...
Flutter Dart新特性NulI safety late 关键字、空类型声明符?、非空断言!、required 关键字
目录 late 关键字 required关键词: 常用的Model对象使用required Null safety翻译成中文的意思是空安全 null safety 可以帮助开发者避免一些日常开发中很难被发现的错误,并且额外的好处是可以改善性能后的版本都要求使用nul1 safety。Flutter2.2.0(2021年5月19日…...
CF2096G Wonderful Guessing Game 构造
题解 首先考虑没有 ? ? ? 回答的时候,答案是多少。 猜猜需要多少个询问。 ⌈ log 2 n ⌉ ? ⌈ log 3 n ⌉ ? \lceil \log_2n\rceil ? \lceil \log_3n\rceil ? ⌈log2n⌉?⌈log3n⌉? 可以构造一个表,行表示不同的询问,…...
制作一款打飞机游戏26:精灵编辑器
虽然我们基本上已经重建了Axel编辑器,但我不想直接使用它。我想创建一个真正适合我们当前目的的编辑器,那就是编辑精灵(sprites)。这将是今天的一个大目标——创建一个基于模板的编辑器,用它作为我们实际编辑器的起点。…...
深入Java JVM常见问题及解决方案
1. 简介 Java虚拟机(JVM)是Java程序运行的核心环境,但其复杂性可能导致内存泄漏、性能下降、类加载失败等问题。本文从内存管理、垃圾回收、性能调优、异常处理四大方向,结合工具使用与实战案例,详解JVM问题的排查与解…...
【MySQL】Java代码操作MySQL数据库 —— JDBC编程
目录 1. Java的JDBC编程 1.1 Java的数据库编程:JDBC 1.2 JDBC工作原理 1.3 如何在项目中导入数据库驱动包 如何下载数据库驱动包 jar包如何引入项目中 2. 编写JDBC代码 1. 创建并初始化一个数据源(DataSource) 2. 和数据库服务器建立连接 3. 构造 SQL 语句…...
Marmoset Toolbag 5.0 中文汉化版 八猴软件中文汉化版 免费下载
八猴安装包下载链接 https://pan.baidu.com/s/1Mgy3Mrlrb3Tvtc8w7Zn1nA?pwd6666 提取码:6666 Marmoset Toolbag是由Monkey公司推出一款专业动画渲染软件,也叫做八猴渲染器。该软件主要特征功能是可以进行实时模型观察、材质编辑和动画预览,…...
Java编程中常见错误的总结和解决方法
1. 找不到文件 问题描述:尝试编译一个名为ChangeCha.java的文件,但编译器找不到这个文件。错误信息:javac: 找不到文件: ChangeCha.java解决方法:检查文件名是否正确,文件是否存在于当前目录,或者路径是否…...
【GESP】C++三级练习 luogu-B2114 配对碱基链
GESP三级练习,字符串练习(C三级大纲中6号知识点,字符串),难度★✮☆☆☆。 题目题解详见:https://www.coderli.com/gesp-3-luogu-b2114/ 【GESP】C三级练习 luogu-B2114 配对碱基链 | OneCoderGESP三级练…...
C++类设计新思路:封装结构体成员变量
C++类设计新思路:封装结构体成员变量 引言 在C++编程里,类是封装数据和行为的重要手段。常规的类设计直接把成员变量定义在类中,再通过成员函数访问和修改这些变量。不过,有时候我们可以采用不同的设计思路,例如将成员变量封装到结构体里,这样可能会带来一些好处。本文…...
图像预处理-形态学变换
针对二值化图像,其有两个输入,一个输出:输入为原图像、核(结构化元素),输出为形态学变换后的图像。基本操作有腐蚀和膨胀。 一.核 联想到之前的卷积核,也是一种核。 此时的核就跟卷积核不太一…...
关于百度模型迭代个人见解:技术竞速下的应用价值守恒定律
就在前天,在 2025 年 4 月 25 日的百度 Create 开发者大会上,文心大模型 4.5 Turbo 与 X1 Turbo 的发布再次将 AI 行业带入 "涡轮加速" 时代。这两款模型不仅在多模态理解、逻辑推理等核心指标上实现突破,更以80% 的价格降幅重塑行…...
从基础到实战的量化交易全流程学习:1.3 数学与统计学基础——概率与统计基础 | 基础概念
从基础到实战的量化交易全流程学习:1.3 数学与统计学基础——概率与统计基础 | 基础概念 第一部分:概率与统计基础 第1节:基础概念:随机变量、概率分布、大数定律与中心极限定理 一、随机变量与概率分布:用数学描述市场…...
混沌工程领域常用工具的对比分析
以下是混沌工程领域常用工具的对比分析,涵盖主流工具的核心功能、优势、适用场景及局限性,帮助技术团队根据自身需求选择合适的工具: 一、故障注入工具对比 工具核心特点优势适用场景局限性生态集成开源/付费Chaos MonkeyNetflix 开源,随机终止生产环境实例,模拟硬件/进程…...
LINUX的使用(2)- 安装软件
0.防火墙相关 启动防火墙: sudo systemctl start firewalld #查看防火墙列表 firewall-cmd --list-ports 设置防火墙开机自启: sudo systemctl enable firewalld 检查防火墙状态: sudo firewall-cmd --state 允许某个端口(如端…...
一主多从+自组网络,无线模拟量信号传输专治布线PTSD
无线模拟量信号传输模块通过无线方式实现模拟量信号的传输,采集工业现场标准4~20mA电流信号,并将其转换为无线信号进行传输。 以下是关于无线模拟量信号传输模块实现无线模拟量信号传输的详细介绍: 一、模块原理 无线模拟量信号传输模块的…...
IDEA中使用Git
Git工作流程 创建远程仓库 现在我们已经在本地创建了一个Git仓库,但是这只能满足我们单人开发,如果想要团队协作,还需要一个远程仓库 目前比较流行的远程仓库,有下面这两个: github:https://github.com …...
Go RPC 服务方法签名的要求
在 Go 中,RPC 方法的签名有严格的要求,主要是为了保证方法的调用能够通过网络正确地传输和解析。具体要求如下: 1. 方法必须是导出的 RPC 服务的方法必须是导出的(即首字母大写)。这是因为 Go 的反射机制要求服务方法…...
Ant(Ubuntu 18.04.6 LTS)安装笔记
一、前言 本文与【MySQL 8(Ubuntu 18.04.6 LTS)安装笔记】同批次:先搭建数据库,再安装JDK,后面肯定就是部署Web应用。其中Web应用的部署使用 Ant 方式,善始善终,特以笔记。 二、准备 …...
相机DreamCamera2录像模式适配尺寸
在开发中遇到 一个问题,相机切换视频模式时,预览时,界面不能充满屏幕两侧有黑边,客户要求修改,在此记录 一问题现象: 系统相机在视频模式下预览时如下现象如图1,期望现象如图2: 图1 …...
Animate 中HTMLCanvas 画布下实现拖拽、释放、吸附的拼图游戏
1.舞台上物体拖拽 2.松手以后,检查是否移动到范围内,是则自动吸附 3.播放音效 4.变量1,显示在舞台的动态文本中 1.实现拖拽 下面代码实现拖拽和释放 地图模块 //记录原始位置 var OriXthis.my_mc.x; var OriYthis.my_mc.y;this.my_mc.on(&q…...