如何用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

相关推荐

  • 如何用Python爬取电驴数据,Python爬虫怎么写?

    使用 Python 操作电驴 (eMule) 的技术指南电驴 (eMule) 是一款基于 eDonkey2000 网络协议的经典文件共享软件,虽然该软件已处于维护后期阶段,但通过 Python 对其进行自动化控制或集成仍然是可行的,通常情况下,我们不会使用 Python 从零开始编写 eMule 协议,而是通过……

    2026年7月14日
    600
  • 防火墙NAT转换设置单向传输的具体步骤与技巧是什么?

    防火墙NAT转换设置单向传输的精准方案实现防火墙NAT单向传输(如仅允许外部访问内部特定服务,禁止内部主动访问外部特定目标)的核心在于精确组合目的NAT(DNAT)与严格的访问控制策略(ACL),关键点是允许外部发起的连接通过DNAT转换进入内部,同时利用状态检测和策略路由阻断内部主动发起的、指向相同外部目标的……

    2026年2月5日
    12950
  • 服务器如何设置开机自动启动SSH服务?SSH服务自启动配置教程

    服务器实现SSH服务的开机自启动,是保障运维效率与系统可管理性的基石,核心结论在于:通过系统原生服务管理工具(如systemd或SysVinit)将sshd服务设为开机自启,并配合端口监听检测与防火墙放行,能够确保服务器在重启后无需人工干预即可恢复远程管理能力,这是构建高可用运维体系的第一道防线,SSH服务自启……

    2026年3月27日
    7500
  • 个人数据泄露怎么办?如何保护个人隐私安全

    保护个人数据的核心在于建立“最小权限”意识,主动管理应用授权,并定期清理数字足迹,而非依赖单一的安全软件,在2026年的今天,我们每个人的生活都已被数据包裹,手机里的每一次点击、智能家居的每一次响应、甚至步行时的轨迹,都在无声地构建你的数字画像,很多人误以为数据安全只是黑客攻击或病毒入侵的问题,但实际上,最大的……

    2026年5月29日
    4500
  • 个人数字证书密码是什么?个人数字证书密码忘记了怎么办

    个人数字证书密码通常是由您在申请证书时自行设置的6-18位字母数字组合,若遗忘则无法直接找回,必须通过CA机构进行证书重置或重新申请,这个数字证书,您可以把它想象成您在互联网世界的“电子身份证”或“U盾”,它不仅仅是一串代码,更是您身份的唯一标识,当您在银行转账、签署电子合同或登录政府服务平台时,就是这个小小的……

    2026年5月30日
    6100
  • 服务器宽带兆数到底怎么选不浪费,多少兆才够用?

    服务器宽带兆数决定网站访问速度和并发承载能力,选择时必须根据业务类型、预估流量和预算精确匹配,并非越大越好,10M、50M、100M等不同规格对应不同场景,盲目扩容不仅浪费成本,还可能掩盖架构问题,服务器宽带兆数到底是什么?搞懂这几个核心概念服务器宽带兆数,通常以Mbps(兆比特每秒)为单位,表示服务器网卡每秒……

    2026年8月8日
    800
  • Linux服务器日志怎么查看,有哪些工具推荐?

    查看Linux服务器日志,最直接的方式是用tail、grep、less、journalctl这些命令组合,需要集中分析时再引入ELK或Loki, 下面我按使用场景拆开讲,从单机排查到集群监控,每一步都给出可验证的操作方法,先搞清楚日志放在哪Linux系统本身就把日志组织得比较规矩,大多数日志在/var/log……

    2026年8月23日
    000
  • 服务器接口被重复访问怎么办?原因分析与解决方案

    服务器接口被重复访问的核心症结在于系统缺乏有效的幂等性设计与流量防护机制,导致同一请求被多次处理,进而引发数据不一致、资源浪费甚至系统崩溃,解决这一问题的根本路径,必须从客户端请求机制、服务端校验逻辑以及基础设施层的流量控制三个维度构建立体防御体系,确保业务逻辑的原子性与数据的最终一致性,核心结论:构建“客户端……

    2026年3月10日
    13400
  • 服务器如何开放外网访问?服务器开放外网访问安全设置方法

    服务器开放外网访问是一项高风险与高收益并存的技术操作,其核心原则必须遵循“最小权限原则”与“深度防御策略”,在确保业务连续性的前提下,必须将安全防护置于首位,任何忽视安全配置的端口开放都可能导致服务器沦为肉鸡或数据泄露的源头, 成功的实施路径并非简单的防火墙配置,而是一个包含网络规划、权限管控、加密传输及持续监……

    2026年3月27日
    8900
  • 个人用的服务器怎么买?个人服务器租用哪个平台好

    个人服务器不再是极客的专属玩具,而是构建私有云、自动化家庭网络及低成本开发测试环境的终极解决方案,其核心价值在于数据主权与高度可定制性,在云计算巨头垄断市场的今天,许多人误以为将数据托管给大厂是最安全的选择,随着隐私泄露事件的频发和订阅费用的逐年攀升,越来越多的技术爱好者开始转向本地化部署,个人服务器就像是你数……

    2026年5月27日
    4600

发表回复

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