如何用Python控制舵机?python舵机控制代码

在 Python 中控制舵机(Servo Motor)通常涉及使用微控制器(如 Raspberry Pi、Arduino 或 ESP32)或者通过 GPIO 库直接控制,以下是几种常见的方法:


使用 Raspberry Pi 控制舵机

Raspberry Pi 可以通过 GPIO 引脚发送 PWM 信号来控制舵机。

python与arduino控制舵机角度
加载中
python与arduino控制舵机角度

安装库:

pip install RPi.GPIO

示例代码:

import RPi.GPIO as GPIO
import time
# 设置 GPIO 模式
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# 定义舵机连接的 GPIO 引脚
SERVO_PIN = 18
# 初始化 GPIO
GPIO.setup(SERVO_PIN, GPIO.OUT)
# 创建 PWM 对象
pwm = GPIO.PWM(SERVO_PIN, 50)  # 50 Hz 是舵机的标准频率
# 启动 PWM
pwm.start(0)
try:
    while True:
        # 设置舵机角度 (0-180 度)
        for angle in range(0, 181, 10):
            duty_cycle = (angle / 18.0) + 2.5  # 计算占空比
            pwm.ChangeDutyCycle(duty_cycle)
            time.sleep(1)
        for angle in range(180, -1, -10):
            duty_cycle = (angle / 18.0) + 2.5
            pwm.ChangeDutyCycle(duty_cycle)
            time.sleep(1)
except KeyboardInterrupt:
    pass
finally:
    pwm.stop()
    GPIO.cleanup()

如何用Python控制舵机?python舵机控制代码


使用 Arduino 控制舵机

如果你使用 Arduino,可以通过串口与 Python 通信,让 Python 发送指令来控制舵机。

Arduino 代码:

#include <Servo.h>
Servo myServo;
void setup() {
    myServo.attach(9);  // 舵机连接到数字引脚 9
    Serial.begin(9600);
}
void loop() {
    if (Serial.available() > 0) {
        int angle = Serial.parseInt();  // 读取串口数据
        if (angle >= 0 && angle <= 180) {
            myServo.write(angle);  // 设置舵机角度
        }
    }
}

Python 代码:

import serial
import time
# 设置串口

如何用Python控制舵机?python舵机控制代码

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # 根据实际端口修改 try: while True: angle = int(input("请输入舵机角度 (0-180): ")) if 0 <= angle <= 180: ser.write(str(angle).encode()) # 发送角度值 time.sleep(1) else: print("角度必须在 0-180 之间!") except KeyboardInterrupt: pass finally: ser.close()

使用 ESP32 控制舵机

ESP32 也可以通过 PWM 控制舵机,并且可以通过 Wi-Fi 或蓝牙与 Python 通信。

ESP32 代码:

#include <Servo.h>
Servo myServo;
void setup() {
    myServo.attach(18);  // 舵机连接到 GPIO 18
    Serial.begin(115200);
}
void loop() {
    if (Serial.available() > 0) {
        int angle = Serial.parseInt();
        if (angle >= 0 && angle <= 180) {
            myServo.write(angle);
        }
    }
}

如何用Python控制舵机?python舵机控制代码

Python 代码:

import serial
import time
# 设置串口
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)  # 根据实际端口修改
try:
    while True:
        angle = int(input("请输入舵机角度 (0-180): "))
        if 0 <= angle <= 180:
            ser.write(str(angle).encode())  # 发送角度值
            time.sleep(1)
        else:
            print("角度必须在 0-180 之间!")
except KeyboardInterrupt:
    pass
finally:
    ser.close()

注意事项

  • 电源问题:舵机需要较大的电流,建议使用外部电源供电,而不是直接从微控制器供电。
  • PWM 频率:舵机的标准 PWM 频率是 50 Hz,占空比范围通常是 2.5% 到 12.5%。
  • 角度范围:大多数舵机的角度范围是 0-180 度,但某些舵机可能支持更大范围。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/%e5%a6%82%e4%bd%95%e7%94%a8python%e6%8e%a7%e5%88%b6%e8%88%b5%e6%9c%ba%ef%bc%9fpython%e8%88%b5%e6%9c%ba%e6%8e%a7%e5%88%b6%e4%bb%a3%e7%a0%81/

赞 (0)
同样预算GEO和投流哪个效果好?2026年百度GEO优化技巧
上一篇 2026年7月12日 02:57
Linux进程死掉怎么办?Linux进程突然崩溃原因
下一篇 2026年7月12日 02:58

相关推荐

  • 服务器开启命令方块怎么操作?我的世界命令方块开启教程

    在Minecraft服务器运维与高级玩法搭建中,开启命令方块是实现自动化、自定义规则与复杂游戏逻辑的核心前提,核心结论是:服务器开启命令方块的本质并非简单的开关切换,而是一个涉及服务器性能优化、权限安全配置与游戏版本适配的系统工程,必须在server.properties文件中修改核心参数,并结合控制台权限管理……

    2026年3月28日
    14900
  • 高级转录组分析怎么做?R数据可视化教程

    掌握高级转录组分析与R数据可视化的深度融合,是2026年破局多组学数据挖掘、实现从海量测序数据向高影响力科研成果转化的唯一高效路径,2026转录组学演进:为何高级分析与可视化成破局关键测序成本下探与数据维度爆炸根据2026年《Nature Biotechnology》最新行业前瞻,单细胞与空间转录组测序成本较三……

    2026年4月24日
    5400
  • python pexpect怎么用?python pexpect模块安装教程

    Python中并不存在名为pexcept的标准库,正确且广泛使用的异常处理库是pytest中的异常捕获机制或原生try-except,若需处理复杂异常链,建议结合traceback模块或使用第三方库如exceptiongroup(Python 3.11+),在Python开发领域,异常处理是保证代码健壮性的核心……

    2026年7月5日
    11400
  • HBuilder如何配置Python环境,怎么用?

    HBuilderX 并非原生支持 Python,但通过插件市场安装 Python 扩展后,就能直接编写、运行和调试 Python 代码,对于前端开发者来说,这是一个非常轻便的选择,HBuilderX 能写 Python 吗?—— 官方定位与插件生态HBuilderX 由 DCloud 推出,最初是为 Vue、u……

    2026年7月20日
    1500
  • 公司常用的web服务器软件有哪些类型?,哪个最稳定?

    公司常用的Web服务器软件主要包括Apache、Nginx、IIS、Tomcat、LiteSpeed和Caddy,它们各有侧重,选择合适的服务器需要根据业务场景、性能需求和运维能力综合判断,主流Web服务器软件类型与特点Apache HTTP ServerApache是历史最悠久、模块最丰富的Web服务器,由A……

    2026年7月28日
    800
  • 如何实现服务器1秒实时监控?热门服务器监控工具推荐

    服务器监控在1秒内是现代IT基础设施的基石,它能实时捕捉系统异常,预防故障扩散,确保业务高可用性,通过高频率数据采集和智能告警,企业能缩短平均修复时间(MTTR),避免因停机造成的经济损失,在云原生和微服务架构中,1秒精度监控已成为运维标准,帮助团队快速响应CPU飙升、内存泄漏或网络延迟等问题,保障用户体验和系……

    2026年2月9日
    12300
  • 虚拟机多个文件如何高效管理,虚拟机文件太大怎么清理?

    虚拟机文件变成“一窝碎片”,多数情况下不是故障,而是快照、磁盘拆分和数据盘挂载共同留下的痕迹,真正拖慢虚拟机性能的,通常不是文件数量本身,而是那条没被整合的快照链,打开虚拟机存放目录,看到一大堆 vmdk 文件是常态,有人以为中了病毒,有人觉得是垃圾缓存,其实背后是虚拟化平台的正常工作机制,搞清楚这些文件各自的……

    2026年9月21日
    000
  • 服务器带宽扩大需要多少钱?服务器带宽扩容费用详解

    服务器带宽扩大是提升网络性能、保障业务连续性及优化用户体验的决定性因素,在数字化转型的当下,带宽不仅是数据传输的通道,更是企业业务处理能力的直接体现,核心结论在于:带宽扩容并非简单的资源堆砌,而是一项基于精准流量预测、成本控制与技术架构优化的系统工程,通过科学的扩容策略,企业能够有效解决网络拥堵、降低延迟,并在……

    2026年4月4日
    7100
  • 防火墙WAF模块如何有效提升网络安全防护能力?

    在当今高度互联的数字世界,保护Web应用免受层出不穷的网络攻击是企业的核心安全需求,防火墙WAF模块(Web Application Firewall)是部署在Web应用程序与互联网之间的专用安全组件,其核心价值在于深度解析HTTP/HTTPS流量,识别并阻断针对Web应用层(OSI模型第7层)的恶意攻击,如S……

    2026年2月4日
    11700
  • 服务器怎么分配虚拟内存?虚拟内存设置多少合适

    服务器分配虚拟内存的核心原则在于“按需分配、动态调整、避免滥用”,其本质是利用硬盘空间弥补物理内存不足,但绝不能替代物理内存的高效性,合理配置虚拟内存,能有效防止服务器因内存耗尽而崩溃,同时保障系统在高负载下的稳定性,若配置不当,过度依赖虚拟内存会导致频繁的磁盘读写,严重拖慢系统响应速度,甚至引发服务宕机,核心……

    2026年3月20日
    11400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注