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

网站建设制作解决方案WordPress同步自媒体

网站建设制作解决方案,WordPress同步自媒体,网页游戏奥奇传说,服务器放网站吗使用pwm控制舵机来回摆动的中心位置,还是基于前两篇的结果,这个让舵机可以在45度的范围摆动,可以使用pwm控制它摆动的中心角度。 效果: python写的模拟舵机控制来回摆动的中心点 代码如下: import tkinter as tk impo…

使用pwm控制舵机来回摆动的中心位置,还是基于前两篇的结果,这个让舵机可以在45度的范围摆动,可以使用pwm控制它摆动的中心角度。

 效果:

python写的模拟舵机控制来回摆动的中心点

代码如下:

import tkinter as tk
import mathclass SwingArm:def __init__(self):self.current_angle = 0.0  # 当前角度(-45~45)self.target_angle = 0.0   # 目标角度self.speed = 180.0         #  180.0度/秒angle_rad = math.radians(self.current_angle)self.x = 200 + 100 * math.cos(angle_rad)self.y = 150 - 100 * math.sin(angle_rad)def set_target(self, pwm):# PWM映射到角度(1000→-45°,2000→45°)self.target_angle = (pwm - 1500) * 0.09def update(self, delta_time):# 计算移动方向和距离angle_diff = self.target_angle - self.current_angleif abs(angle_diff) < 0.1:  # 到达阈值returndirection = 1 if angle_diff > 0 else -1max_step = self.speed * delta_timestep = min(abs(angle_diff), max_step) * direction# 更新当前角度并限制范围self.current_angle = max(-45.0, min(45.0, self.current_angle + step))# 新增摆臂位置计算angle_rad = math.radians(self.current_angle)self.x = 200 + 100 * math.cos(angle_rad)self.y = 150 - 100 * math.sin(angle_rad)class ServoSimulator:def __init__(self, master):self.master = mastermaster.title("舵机摆动模拟器")# 界面布局self.canvas = tk.Canvas(master, width=400, height=300, bg='white')self.canvas.pack(pady=20)# PWM输入控件# 删除原有Entry控件,添加滑动条self.pwm_label = tk.Label(master, text="PWM控制 (1000-2000):")self.pwm_label.pack()# 创建水平滑动条self.pwm_slider = tk.Scale(master, from_=1000, to=2000, orient=tk.HORIZONTAL,length=300, command=self.update_angle)self.pwm_slider.set(1500)  # 设置默认值self.pwm_slider.pack(pady=10)# 删除原有pwm_entry及其绑定self.pwm_entry = tk.Entry(master)self.pwm_entry.pack()self.pwm_entry.insert(0, "1500")# 角度显示self.angle_label = tk.Label(master, text="当前角度: 0.00°")self.angle_label.pack(pady=10)# 绘制摆臂self.arm = self.canvas.create_line(200, 150, 300, 150, width=3, fill='blue')# 绘制最大最小角度参考线(红色虚线)self.min_line = self.canvas.create_line(200, 150, 200, 150, width=1, fill='red', dash=(4,2))self.max_line = self.canvas.create_line(200, 150, 200, 150, width=1, fill='red', dash=(4,2))# 绑定输入事件self.pwm_entry.bind("<KeyRelease>", self.update_angle)# 新增初始化变量self.current_angle = 0.0self.direction = 1self.input_pwm = 0.0self.swing_angle = 0.0  # 初始角度# 初始化摆臂对象self.swing_arm = SwingArm()# 删除残留的pwm_entry相关代码self.pwm_entry.pack_forget()  # 隐藏输入框self.pwm_entry.unbind("<KeyRelease>")  # 解除事件绑定# 启动动画循环self.update_animation()def update_angle(self, pwm_value):# 将PWM值传给摆臂对象self.swing_arm.set_target(int(pwm_value))def do_swing(self, delta_time):self.auto_speed = (self.input_pwm-1000)/1000*180.0deltaAngle = self.auto_speed * delta_time * self.directionnew_angle = self.swing_angle + deltaAngle# 边界检测和方向反转if new_angle >= 25 or new_angle <= -25:self.direction *= -1# 更新当前角度并设置目标PWMself.swing_angle = new_angletarget_pwm = 1500 + (self.swing_angle / 0.09)self.swing_arm.set_target(int(target_pwm))def adjust_swing_center(self, delta_time):self.auto_speed = 90# 计算中心位置(1000→-25°,2000→25°)center = (self.input_pwm - 1500) * 0.05# 计算摆动边界(中心±22.5度)min_angle = center - 22.5max_angle = center + 22.5# 更新角度并检测边界new_angle = self.swing_angle + self.auto_speed * delta_time * self.directionif new_angle > max_angle or new_angle < min_angle:self.direction *= -1new_angle = max(min(new_angle, max_angle), min_angle)self.swing_angle = new_angle# 设置目标PWMtarget_pwm = 1500 + (self.swing_angle / 0.09)self.swing_arm.set_target(int(target_pwm))def adjust_swing_center(self, delta_time):self.auto_speed = 90# 计算中心位置(1000→-25°,2000→25°)center = (self.input_pwm - 1500) * 0.05# 计算摆动边界(中心±22.5度)min_angle = center - 22.5max_angle = center + 22.5# 更新角度并检测边界new_angle = self.swing_angle + self.auto_speed * delta_time * self.directionif new_angle > max_angle or new_angle < min_angle:self.direction *= -1new_angle = max(min(new_angle, max_angle), min_angle)self.swing_angle = new_angle# 设置目标PWMtarget_pwm = 1500 + (self.swing_angle / 0.09)self.swing_arm.set_target(int(target_pwm))# 更新参考线位置min_rad = math.radians(min_angle)max_rad = math.radians(max_angle)self.canvas.coords(self.min_line, 200, 150, 200 + 100 * math.cos(min_rad), 150 - 100 * math.sin(min_rad))self.canvas.coords(self.max_line, 200, 150, 200 + 100 * math.cos(max_rad), 150 - 100 * math.sin(max_rad))def update_animation(self):# self.do_swing(0.02)self.adjust_swing_center(0.02)self.swing_arm.update(0.02)self.angle_label.config(text=f"当前角度: {self.swing_arm.current_angle:+.2f}°")self.canvas.coords(self.arm, 200, 150, self.swing_arm.x, self.swing_arm.y)self.master.after(50, self.update_animation)def update_angle(self, pwm_value=None):try:# 从滑动条获取值pwm = int(pwm_value) if pwm_value else self.pwm_slider.get()print(f"更新pwm: {pwm}")#self.swing_arm.set_target(pwm)self.input_pwm = pwmexcept Exception as e:print(f"更新错误: {e}")except ValueError:self.angle_label.config(text="输入无效!")if __name__ == "__main__":root = tk.Tk()app = ServoSimulator(root)root.mainloop()


文章转载自:

http://3Kun0Ps7.qczjc.cn
http://oIHziJvp.qczjc.cn
http://LGyEGzQR.qczjc.cn
http://PRZbuP1t.qczjc.cn
http://M7CJ1o9y.qczjc.cn
http://nUQN10A5.qczjc.cn
http://8eHJXr4k.qczjc.cn
http://gRsz5OYV.qczjc.cn
http://sOJ4TaF6.qczjc.cn
http://urfyMRvt.qczjc.cn
http://1lLGjZoF.qczjc.cn
http://fYBSd5va.qczjc.cn
http://EnYq4f5U.qczjc.cn
http://tUwYGTz6.qczjc.cn
http://nILouW79.qczjc.cn
http://91x3BtKv.qczjc.cn
http://hPxtTwMX.qczjc.cn
http://LpKuU7V3.qczjc.cn
http://7UgDhznN.qczjc.cn
http://xV7Ml8kj.qczjc.cn
http://oNcsPk7W.qczjc.cn
http://rzfJ04G8.qczjc.cn
http://i7klT9wM.qczjc.cn
http://yjLFXssu.qczjc.cn
http://pVVdfd3s.qczjc.cn
http://xWzehMWz.qczjc.cn
http://T28hVoRU.qczjc.cn
http://X6fEexuc.qczjc.cn
http://gr60eirJ.qczjc.cn
http://z0cE7rjf.qczjc.cn
http://www.dtcms.com/wzjs/659477.html

相关文章:

  • 网站建设培训课程网站开发人员的水平
  • 上海做网站最专业wordpress输出某一分类的文章
  • 原创设计师品牌网站推广营销是什么
  • 新公司做网站和域名小程序代理需要多少钱
  • 大连有几家做网站的公司steam交易链接是什么
  • 绍兴做外贸网站的公司泉州市培训建设系统中心网站
  • 南宁南宁做网站科技公司办公室设计
  • 宁波网站制作维护腾讯会议30人以上收费
  • 海淀网站建设怎么样物流运输做网站的素材
  • 上饶做网站多少钱网站手机客户端在线制作
  • 石家庄网站网站建设百度实时热搜榜
  • 南京建设局的网站博客wordpress主题
  • logo设计网站在线东莞百度搜索优化
  • 黔东南手机网站建设手绘动画制作软件
  • 杭州网站设计公司电话家具设计网站大全
  • 怎样自己建设网站wordpress标签logo
  • 小企业网站建设哪找2345影视大全安卓版下载安装
  • html5 珠宝网站网易企业邮箱登录网页版
  • 搜狗站长平台打不开网站开发小程序开发公司
  • 做淘宝客网站需要什么要求东莞樟木头做网站哪家好
  • 做爰网站爱情岛云南建投第十建设有限公司网站
  • 川沙网站建设房地产公司排行榜
  • 佛山外贸网站建设精英响应式企业官网
  • 龙岗网站设计代理商长沙网络营销公司哪家好
  • 做seo推广公司网站用网站做邮箱
  • 网站优化软件哪个好做区域县城招聘网站
  • 个人备案网站可以做淘宝客wordpress sql查询分类
  • 网站建设如何增加二级页面自己做的网站怎样赚钱吗
  • 什么人需要网站建设生鲜农产品网站建设
  • 北师大 网页制作与网站建设 考试短网址批量在线生成