• MicroPython开发板:pyboard快速参考


    pyboard是MicroPython官方支持的开发板,具有很好的兼容性和易用性,下面的内容是pyboard开发过程中最常用的一些参考。

    开发板管脚

    下图为PYBv1.1开发板的引脚示意图:

    PYBv1.1

    下面是pyboard的快速参考

    开发板的基本控制

    #使用pyb模块
    
    import pyb
    
    pyb.repl_uart(pyb.UART(1, 9600)) # 在UART(1)上复制REPL
    pyb.wfi() # 暂停CPU, 等待中断
    pyb.freq() # 获取CPU和总线频率
    pyb.freq(60000000) # 设置CPU频率为60MHz
    pyb.stop() # 停止CPU,等待外部中断
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    时间和延迟

    使用time模块:

    time.sleep(1)           # 休眠1秒
    time.sleep_ms(500)      # 休眠500毫秒
    time.sleep_us(10)       # 休眠10微秒
    start = time.ticks_ms() # 获取毫秒计时器
    delta = time.ticks_diff(time.ticks_ms(), start) # 计算时间差
    
    • 1
    • 2
    • 3
    • 4
    • 5

    内部LED

    使用pyb.LED

    from pyb import LED
    
    led = LED(1) # 1=红, 2=绿, 3=黄, 4=蓝
    led.toggle()
    led.on()
    led.off()
    
    # LED3和4支持PWM亮度(0-255)
    LED(4).intensity()    #获取亮度
    LED(4).intensity(128) #设置亮度为一半
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    引脚和GPIO

    使用pyb.Pin

    from pyb import Pin
    
    p_out = Pin('X1', Pin.OUT_PP) #设置为输出
    p_out.high() #输出高电平
    p_out.low() #输出低电平
    
    p_in = Pin('X2', Pin.IN, Pin.PULL_UP) #设置为输入
    p_in.value() # 获取值, 0 or 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    舵机控制

    使用 pyb.Servo

    from pyb import Servo
    
    s1 = Servo(1) # 初始化舵机(X1, VIN, GND)
    s1.angle(45) # 旋转到45度
    s1.angle(-60, 1500) # 在1500ms内旋转-60度
    s1.speed(50) # 用于连续旋转的舵机
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    外部中断

    使用 pyb.ExtInt

    from pyb import Pin, ExtInt
    
    callback = lambda e: print("intr") #中断回调函数
    ext = ExtInt(Pin('Y1'), ExtInt.IRQ_RISING, Pin.PULL_NONE, callback) #在Y1引脚设置外部中断
    
    • 1
    • 2
    • 3
    • 4

    定时器

    使用pyb.Timer

    from pyb import Timer
    
    tim = Timer(1, freq=1000)
    tim.counter() # 获取计数值
    tim.freq(0.5) # 频率为0.5 Hz
    tim.callback(lambda t: pyb.LED(1).toggle())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    RTC(时钟)

    使用pyb.RTC

    from pyb import RTC
    
    rtc = RTC()
    rtc.datetime((2024, 1, 20, 1, 13, 46, 0, 0)) # 设置日期和时间
    rtc.datetime() # 获取日期和时间
    
    • 1
    • 2
    • 3
    • 4
    • 5

    PWM(脉宽调制)

    使用pyb.Pinpyb.Timer

    from pyb import Pin, Timer
    
    p = Pin('X1') # X1有TIM2, CH1
    tim = Timer(2, freq=1000) #初始化定时器
    ch = tim.channel(1, Timer.PWM, pin=p) #通道1的PWM
    ch.pulse_width_percent(50) #设置占空比
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ADC(模数转换)

    使用pyb.Pinpyb.ADC

    from pyb import Pin, ADC
    
    adc = ADC(Pin('X19'))
    adc.read() # 读取值, 0-4095
    
    • 1
    • 2
    • 3
    • 4

    DAC(数模转换)

    使用pyb.Pinpyb.DAC

    from pyb import Pin, DAC
    
    dac = DAC(Pin('X5'))
    dac.write(120) # 输出0到255
    
    • 1
    • 2
    • 3
    • 4

    UART(串行总线)

    使用pyb.UART

    from pyb import UART
    
    uart = UART(1, 9600)
    uart.write('hello')
    uart.read(5) # 最多读取5个字节
    
    • 1
    • 2
    • 3
    • 4
    • 5

    SPI总线

    使用 pyb.SPI

    from pyb import SPI
    
    spi = SPI(1, SPI.CONTROLLER, baudrate=200000, polarity=1, phase=0)
    spi.send('hello')
    spi.recv(5) # 从总线接收5个字节的数据
    spi.send_recv('hello') # 发送并接收5个字节
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    I2C总线

    I2C硬件可以通过pyboard开发板的X和Y半边使用如:I2C('X')I2C('Y'),或者传递外设的整数标识符来使用,如:I2C(1)。I2C软总线可以通过指定sclsda管脚来代替总线名称来使用。

    I2S总线

    使用machine.I2S

    from machine import I2S, Pin
    
    i2s = I2S(2, sck=Pin('Y6'), ws=Pin('Y5'), sd=Pin('Y8'), mode=I2S.TX, bits=16, format=I2S.STEREO, rate=44100, ibuf=40000) # 创建I2S对象
    i2s.write(buf)             # 把音频样本缓冲区数据写入I2S设备
    
    i2s = I2S(1, sck=Pin('X5'), ws=Pin('X6'), sd=Pin('Y4'), mode=I2S.RX, bits=16, format=I2S.MONO, rate=22050, ibuf=40000) # 创建I2S设备
    i2s.readinto(buf)          # 将I2S设备音频样本填充到缓冲区
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    I2S类目前只在技术预览版提供,在预览期间鼓励用户反馈信息,基于用户的反馈I2S类API和实现可能会有变化。

    PYBv1.0/v1.1有一个I2S总线,id为2。PYBD-SFxW有两个I2S总线,分别为id=1和id=2。I2S和SPI是共享的。

    CAN总线(控制器局域网络总线controller area network)

    使用pyb.CAN

    from pyb import CAN
    
    can = CAN(1, CAN.LOOPBACK)
    can.setfilter(0, CAN.LIST16, 0, (123, 124, 125, 126))
    can.send('message!', 123)   # 给id为123的设备发送消息
    can.recv(0)                 # 从FIFO(先进先出,队列) 0接收消息
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    内部加速度传感器

    使用pyb.Accel

    from pyb import Accel
    
    accel = Accel()
    print(accel.x(), accel.y(), accel.z(), accel.tilt())
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    改造xxl-job适配nacos注册中心
    Day23-JDBC
    基于 HPSO 与多核 LSSVM 的网络入侵检测
    服务器端使用django websocket,客户端使用uniapp 请问服务端和客户端群组互发消息的代码怎么写的参考笔记
    C++ Reference: Standard C++ Library reference: C Library: cstdio: FILE
    Go--结构体
    【k8s源码篇之Informer篇3】理解Informer中的Reflector组件
    android的三种动画
    计算机毕业设计SSM电影网站系统设计【附源码数据库】
    低功耗工业RFID设备应用
  • 原文地址:https://blog.csdn.net/superatom01/article/details/136193231