在所有gpi上调制复信号

2024-09-27 23:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在GIPO的输出端有一个近似这个形状的信号(脉冲中的子脉冲)enter image description here

如何在PI上使用PWM实现这一点?我试着用RPIO来做,但他那古老的GPIO引脚可能不适合我的rpi3b+。在

from RPIO import PWM
servo = PWM.Servo()
servo.set_servo(12, 10000)
PWM.add_channel_pulse(0, 12, start=200, width=2000)

引脚上没有信号。 enter image description here 我很困惑,我想试试内置的库来处理PWM,但是我没有发现子周期的可能性。否则,如何从不同的GPIO输出这种形式的信号?在


Tags: fromimportaddgpio信号pi脉冲形状
0条回答
网友
1楼 · 发布于 2024-09-27 23:28:25

documentation建议将通道列表作为第一个参数传递给两者GPIO.设置以及GPIO.输出会完成你的要求。在

chan_list = [11,12]    # add as many channels as you want!
                       # you can tuples instead i.e.:
                       #   chan_list = (11,12)
GPIO.setup(chan_list, GPIO.OUT)
GPIO.output(chan_list, GPIO.LOW)                # sets all to GPIO.LOW
网友
2楼 · 发布于 2024-09-27 23:28:25

与pigpio相比,我有更好的PWM经验零售物价指数. Wiringpi也很好,但pigpio的PWM支持在IMO中要好得多

该文档具有在任何引脚上生成PWM的一些功能:

http://abyz.co.uk/rpi/pigpio/python.html#set_servo_pulsewidthhttp://abyz.co.uk/rpi/pigpio/python.html#set_PWM_dutycycle

你有没有用过RPi.GPIO?我知道这不是一个确切的答案,但我希望它至少能给你指明正确的方向。在

网友
3楼 · 发布于 2024-09-27 23:28:25

看来,您应该使用这样的代码。不幸的是,我没有机会测试它,因为我没有频率计或示波器。在

import time
import pigpio

GPIO=12

pulse = []

#                          ON       OFF    MICROS
pulse.append(pigpio.pulse(1<<GPIO, 0,       5))
pulse.append(pigpio.pulse(0,       1<<GPIO, 5))
pulse.append(pigpio.pulse(1<<GPIO, 0,       5))
pulse.append(pigpio.pulse(0,       1<<GPIO, 1e7))

pi = pigpio.pi() # connect to local Pi

pi.set_mode(GPIO, pigpio.OUTPUT)

pi.wave_add_generic(pulse)

wid = pi.wave_create()

if wid >= 0:    
    pi.wave_send_repeat(wid)
    time.sleep(60)   # or another condition for stop processing
    pi.wave_tx_stop()
    pi.wave_delete(wid)

pi.stop()

相关问题 更多 >

    热门问题