• 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
  • 相关阅读:
    [项目管理-31]:Scurm迭代周期的项目总结与项目计划
    G - Damaged Bicycle 状压+最短路,D-七圣召唤_概率dp
    CH559L单片机ADC多通道采样数据串口打印案例
    PostgreSQL 连接是否要通过SSL,为什么使用SSL 连接后,业务部门会投诉我?
    【Mysql】有关数据表中存在重复数据问题解决方案(已实现mysql类型的sql)
    JavaScript语法知识笔记(二)——typeof检测变量数据类型, 强制类型转换,其他进制的数字,运算符,一元运算符.
    基于51单片交通灯控制器_紧急+行人+总开关
    前端实现SuperMap iServer服务增(发布)删改查和刷新的方法.md
    完全可复制、经过验证的 Go 工具链
    在Linux系统上用nmap扫描SSL漏洞的方法
  • 原文地址:https://blog.csdn.net/superatom01/article/details/136193231