RaspberryPico 解析 PWM

ここに画像の説明を挿入

リモコン受信機インターフェースの定義 (ステッカーが上向き):

  • 信号
  • 正極
  • 負極

コード (直接実行)


from machine import Pin, PWM
import utime

rc = Pin(0, Pin.IN)

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

MAX=-1
MIN=99999

while True:
    #等待低电平结束,然后记录时间
    while rc.value() == 0:  #捕捉信号端输出上升沿
        pass
    time1 = utime.ticks_us()
    
    #等待高电平结束,然后记录时间
    while rc.value() == 1:  #捕捉信号端输出下降沿
        pass
    time2 = utime.ticks_us()
    
    #等待低电平结束,然后记录时间
    while rc.value() == 0:  #捕捉信号端输出上升沿
        pass
    time3 = utime.ticks_us()

    period = time3 - time1
    high_time = time2 - time1
    low_time = time3 - time2
    dc = (int)(high_time * 100 / period*100)
#     print("---------------------------")
#     print("dc=",dc)
    utime.sleep(0.005)
    
    if dc>MAX:
        MAX=dc
        
    elif dc<MIN:
        MIN=dc
        
    
    offset=MAX-MIN
#     print("MAX=",MAX)
#     print("MIN=",MIN)
#     print("offset=",offset)
    
    if offset!=0:
        light=(int)((dc-MIN)/offset*65535)
        #根据遥控器行程量控制板载LED灯亮度
        led.duty_u16(light)
        print("light=",light)



コード (割り込み)

ここでは基本原則のみを記述し、具体的な実装については繰り返しません。

#从machine中引入Pin,以便后面控制引脚
from machine import Pin
 
# 配置按键
# key = machine.Pin(id, mode, pull)
# id:PICO引脚编号。这里按键设置为与GPIO0相连
# mode:输入输出方式,有Pin.IN(输入)和Pin.OUT(输出)两种。这里设置为输入模式
# pull:上下拉电阻配置,有None(无上下拉电阻)、Pin.PULL_UP(上拉电阻)和Pin.PULL_DOWN(下拉电阻)三种
bt = Pin(24, Pin.IN, Pin.PULL_UP)
# 板载LED灯
LED=Pin(25,Pin.OUT)

# 处理中断
def onClick(pin):
    print(pin.value())
    LED.toggle()

# 中断
bt.irq(handler = onClick)


おすすめ

転載: blog.csdn.net/u014492512/article/details/124983730