如何用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://test.idctop.com/article/484606.html

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

相关推荐

  • 服务器反向代理真的能做CDN吗,怎么设置?

    服务器反向代理可以作为CDN的简化替代方案,但受限于架构和功能,无法实现商业CDN的覆盖范围和优化效果,反向代理本质上是一种请求转发机制,CDN则是基于分布式节点的加速网络,两者在缓存静态资源、负载均衡等方面有重叠,但设计目标和实现复杂度相差甚远,如果你正在考虑用自建反向代理来取代CDN,需要先搞清楚它们的内核……

    2026年7月21日
    600
  • 服务器装软件如何从光盘安装,步骤有哪些?

    服务器装软件从光盘装,依然是离线环境或合规要求下的可靠选择,操作虽有门槛但步骤清晰,在隧道效应和远程部署盛行的今天,光盘安装似乎像是上个世纪的产物,然而在物理隔离的内网、涉密单位、老旧设备维护以及需要审计追踪的场景中,光盘安装依然是最标准的答案,运维人员需要掌握的不是“能不能”,而是“怎么做”以及“如何避免踩坑……

    2026年7月29日
    1000
  • 服务器已停止文档介绍内容怎么办,服务器停止响应怎么解决

    的出现,通常标志着系统进入了保护模式或遇到了不可恢复的错误,这并非简单的网络波动,而是服务器端主动切断了数据传输或服务进程,解决这一问题的核心在于迅速定位日志文件、排查资源耗尽情况以及验证配置文件的完整性,以最快速度恢复业务连续性,故障定位与应急响应机制当面对服务器已停止文档介绍内容的提示时,盲目重启往往无法解……

    2026年4月1日
    10000
  • 服务器开发代码怎么写?服务器开发代码入门教程

    服务器开发代码的质量直接决定了系统的稳定性、并发处理能力与长期维护成本,核心结论在于:高性能服务器的构建并非单纯依赖硬件堆叠,而是源于对底层原理的深刻理解、严谨的架构设计以及对代码细节的极致打磨, 优秀的服务器开发代码必须具备高内聚低耦合的特性,能够以最小的资源消耗处理最大的并发请求,并具备在故障发生时的快速自……

    2026年4月3日
    10400
  • 服务器怎么升级cpu,服务器升级cpu需要注意什么

    服务器CPU升级的核心在于精准的硬件兼容性匹配与严谨的软硬件迁移流程,而非简单的硬件替换,成功的升级必须建立在详尽的兼容性调研、严格的静电防护以及完善的系统快照备份基础之上,任何环节的疏漏都可能导致硬件烧毁或系统崩溃, 只有在确保物理接口匹配、主板BIOS支持以及电源功率冗余的前提下,服务器CPU升级才能实现性……

    2026年3月20日
    13200
  • 服务器主板raid设置怎么做?如何设置

    服务器主板RAID设置的核心在于根据业务需求选择合适的RAID级别,通过BIOS或集成RAID工具完成配置,其中RAID 1和RAID 5是保障数据安全的主流方案,而RAID 0则用于提升读写性能的场景,服务器主板RAID设置教程:从BIOS到系统部署无论你是第一次接触服务器,还是准备升级存储方案,服务器主板R……

    2026年8月5日
    1600
  • 服务器怎么做成云服务器?详细步骤教程

    将物理服务器转化为云服务器,核心在于通过虚拟化技术整合硬件资源,并搭建弹性管理平台实现资源的按需分配与自动化运维,这一过程并非简单的软件安装,而是从底层架构到应用层面的彻底重构,旨在将固定的硬件算力转化为灵活的云服务, 核心原理:虚拟化是云服务器的基石要理解服务器怎么做成云服务器,首先必须掌握虚拟化技术,物理服……

    2026年3月18日
    10300
  • 服务器怎么做文件存储?文件存储搭建教程

    构建高效、安全的服务器文件存储系统,核心在于根据业务规模选择合适的存储架构(如NAS、SAN或分布式存储),配合RAID磁盘阵列实现数据冗余,并建立严格的权限管理体系与自动化备份机制,这是保障数据资产完整性与高可用性的终极方案,对于大多数企业级应用而言,服务器怎么做文件存储不仅仅是一个技术搭建问题,更是一项关乎……

    2026年3月17日
    11300
  • 服务器有堆积需要重启吗,服务器严重堆积怎么快速解决

    当服务器面临严重的性能瓶颈与资源阻塞时,重启往往是最快速恢复服务可用性的应急手段,但这必须建立在严谨的风险评估与标准化的操作流程之上,核心结论在于:重启是解决服务器资源堆积的有效“止损”措施,但绝非长久之计,必须在重启后进行深度的根因分析,以避免问题反复发作,在运维实践中,面对高并发或突发流量,服务器偶尔会出现……

    2026年2月25日
    11400
  • Python中notnull怎么判断?python判断空值None和NaN

    在Python中判断非空值,核心在于区分“变量未定义”、“值为None”以及“值为空字符串或空集合”,通常使用is not None进行严格判断,并结合pandas.isna()处理数据科学场景中的缺失值,很多开发者在初期接触Python时,容易混淆“空”的概念,在Python的世界里,None、空字符串、空列……

    2026年7月5日
    9200

发表回复

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