python香橙派wiringpi库 控制舵机

本文详细介绍了如何在香橙派3b上通过wiringpi库实现0-180度角度控制的软件PWM,包括引脚映射、函数定义和主程序操作。

我使用的是香橙派3b

使用前安装wiringpi库

引脚映射关系:

所以代码18,连的是派的28号引脚

这个是软件控制pwm:
 

import wiringpi
#0-180度的代码,用软件pwm
SERVO_PIN = 18
ANGLE_MIN = 0   
ANGLE_MAX = 180 

SERVO_MIN_PWM = 5   
SERVO_MAX_PWM = 25  

def map_angle_to_pwm(angle):
    return SERVO_MIN_PWM + (angle - ANGLE_MIN) * (SERVO_MAX_PWM - SERVO_MIN_PWM) // (ANGLE_MAX - ANGLE_MIN)

def main():
    print("Servo Control Program")

    if wiringpi.wiringPiSetup() == -1:
        print("Failed to initialize wiringPi")
        exit(1)

    wiringpi.softPwmCreate(SERVO_PIN, 0, SERVO_MAX_PWM) 

    while True:
        for angle in range(ANGLE_MIN, ANGLE_MAX + 1):
            pwm_value = map_angle_to_pwm(angle)
            wiringpi.softPwmWrite(SERVO_PIN, pwm_value)
            wiringpi.delay(15) 

        for angle in range(ANGLE_MAX, ANG
### Orange Pi Python 控制舵机教程 对于在 Orange Pi 上通过 Python 编程控制舵机的操作,可以利用 GPIO 接口发送脉宽调制 (PWM) 信号给舵机。根据提供的信息,在 500 到 2500 微秒范围内的高电平 PWM 脉冲能够使舵机转动到不同的角度位置[^1]。 为了实现这一功能,首先需要安装并设置好 `RPi.GPIO` 或者适用于 Orange Pi 的类似——例如 `OPi.GPIO` 来管理硬件引脚的状态。下面是一个简单的例子展示怎样初始化 GPIO 并向指定通道发出适当宽度的 PWM 波形: ```python import time from OPi import GPIO servo_pin = "PA7" # 定义连接至舵机的数据线所接的具体针脚编号 GPIO.setboard(GPIO.ZEROPLUS2H3) # 设置开发板型号 GPIO.setmode(GPIO.SOC) # 使用 SOC 命名方式定义管脚 GPIO.setup(servo_pin, GPIO.OUT) pwm_frequency = 50 # 设定频率为 50Hz(周期=20ms) duty_cycle_min = 2.5 # 对应最小占空比(约等于500us) duty_cycle_max = 12.5 # 对应最大占空比(约等于2500us) def angle_to_dutycycle(angle): """Convert an angular position into a duty cycle.""" return ((angle / 180) * (duty_cycle_max - duty_cycle_min)) + duty_cycle_min # 创建 PWM 实例对象并与之前设定好的引脚关联起来 pwm_servo = GPIO.PWM(servo_pin, pwm_frequency) try: while True: desired_angle = float(input("Enter target angle between 0 and 180 degrees: ")) if not 0 <= desired_angle <= 180: print("Invalid input! Please enter value within range.") continue dc = angle_to_dutycycle(desired_angle) pwm_servo.start(dc) time.sleep(1) finally: pwm_servo.stop() GPIO.cleanup() # 清理释放资源 ``` 这段代码实现了基本的功能需求:用户可以通过命令行输入想要达到的角度值;程序会计算相应的占空比率并通过 PWM 输出驱动舵机到达该位置。需要注意的是实际应用中可能还需要考虑更多细节因素如误差校正等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式学不会不改名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值