MicroPython开发板:pyboard快速参考

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

开发板管脚

下图为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,等待外部中断

时间和延迟

使用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) # 计算时间差

内部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) #设置亮度为一半

引脚和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

舵机控制

使用 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) # 用于连续旋转的舵机

外部中断

使用 pyb.ExtInt

from pyb import Pin, ExtInt

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

定时器

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

RTC(时钟)

使用pyb.RTC

from pyb import RTC

rtc = RTC()
rtc.datetime((2024, 1, 20, 1, 13, 46, 0, 0)) # 设置日期和时间
rtc.datetime() # 获取日期和时间

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) #设置占空比

ADC(模数转换)

使用pyb.Pinpyb.ADC

from pyb import Pin, ADC

adc = ADC(Pin('X19'))
adc.read() # 读取值, 0-4095

DAC(数模转换)

使用pyb.Pinpyb.DAC

from pyb import Pin, DAC

dac = DAC(Pin('X5'))
dac.write(120) # 输出0到255

UART(串行总线)

使用pyb.UART

from pyb import UART

uart = UART(1, 9600)
uart.write('hello')
uart.read(5) # 最多读取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个字节

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设备音频样本填充到缓冲区

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接收消息

内部加速度传感器

使用pyb.Accel

from pyb import Accel

accel = Accel()
print(accel.x(), accel.y(), accel.z(), accel.tilt())

你可能感兴趣的:(物联网开发,micropython,python,单片机,嵌入式硬件,python)