RaspberryPico解析PPM

PPM理论基础看这篇文章:

t.zoukankan.com/qiyuexin-p-7071420.html

其实主要是这张图

在这里插入图片描述

具体代码如下


from machine import Pin, PWM
import utime

rc = Pin(0, Pin.IN)

#板载LED灯
led = PWM(Pin(25))
led.freq(200)

#等待下一个帧头
while True:
    #等待低电平结束
    while rc.value() == 0:
        print(rc.value())
        pass
    tL=utime.ticks_us()

    #等待高电平结束
    while rc.value() == 1:
        print(rc.value())
        pass
    tH=utime.ticks_us()
    
    #高电平持续超过4ms时认为此阶段为帧尾
    if tH-tL>4000:
        break
    
print("NEW")

channel=0

def onChannel_0(t):
    print("0=",t)

def onChannel_1(t):
    a=0

def onChannel_2(t):
    a=0 
    
def onChannel_3(t):
    a=0
    
def onChannel_4(t):
    a=0
    
def onChannel_5(t):
    a=0
    
def onChannel_6(t):
    a=0
    
def onChannel_7(t):
    a=0

def onChannel_8(t):
    a=0

def onChannel_9(t):
    a=0

#新帧头开始了
while True:
    #等待低电平结束
    while rc.value() == 0:
        pass
    t1=utime.ticks_us()

    #等待高电平结束
    while rc.value() == 1:
        pass
    t2=utime.ticks_us()
        
    t=t2-t1
    
    if t>4000:
        channel=0
#         print("----------")
        continue
    
    if channel==0:
        onChannel_0(t)
    elif channel==1:
        onChannel_1(t)
    elif channel==2:
        onChannel_2(t)        
    elif channel==3:
        onChannel_3(t)        
    elif channel==4:
        onChannel_4(t)        
    elif channel==5:
        onChannel_5(t)       
    elif channel==6:
        onChannel_6(t)      
    elif channel==7:
        onChannel_7(t)      
    elif channel==8:
        onChannel_8(t)      
    elif channel==9:
        onChannel_9(t)
        
    channel+=1
        
    

猜你喜欢

转载自blog.csdn.net/u014492512/article/details/126245877
ppm