Search code examples
pythonraspberry-pipwm

Modulate complex signal on all gpio


I need a signal at the output of the GIPO of approximately this shape.(sub-pulse in pulse)enter image description here

How can this be implemented using PWM on PI? Im trying do it with RPIO,but his ancient GPIO pinout maybe not working for my Rpi 3 b+.

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

Not Signal on pin. enter image description here I'm confused in it and would like to try the built-in library to work with PWM, but I did not find there the possibility of sub-cycles. How else i can a signal of this form be output from different GPIO?


Solution

  • It seems, you should use code like this. Unfortunately, I have no chance to test it since I have no frequency meter or oscillograph.

    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()