探索MicroPython(三)--基础操作示例

狂风中的少年 提交于 2020-02-05 10:56:54

1. LED

pyBoard中一共有4个LED,分别是是LED(1)-LED(4), LED的构造函数和调用方法如下所示:
在这里插入图片描述
点亮LED(4)的示例代码:

from pyb import LED
LED(4).on()

2. 按键

pyBoard上的按键有两个一个是复位键:RST,一个是用户使用的按键USER,MicroPython中关于按键的构造函数与调用方法为:
在这里插入图片描述
按键调用示例代码(按下USER点亮LED):

from pyb import LED,Switch

def fun1():
    LED(4).toggle()

sw = Switch()     #定义按键对象名字为sw
sw.callback(fun1) #当按键被按下时,执行函数fun1(),即LED(4)状态反转

回调函数的使用还可以替换为这样:

from pyb import LED,Switch

sw = Switch()     #定义按键对象名字为sw
sw.callback(lambda:LED(4).toggle())   #当按键被按下时,LED(4)状态反转

3. GPIO

pyBoard上几乎所有的IO都可以进行GPIO的配置,其构造函数与调用方法如下所示:
在这里插入图片描述
GPIO示例代码:

from pyb import Pin

#将LED(4)-"B4"配置成推挽输出模式
p_out=Pin('B4',Pin.OUT_PP)

#将USR按键-"X17"配置为输入方式
p_in = Pin('X17', Pin.IN, Pin.PULL_UP)

while True:

    if p_in.value()==0: #USR被按下接地
        p_out.high()    #点亮LED(4)蓝灯

    else:
        p_out.low()     #关闭LED(4)蓝灯

示例中的‘B4’和‘X17’是LED(4)和USR对应的引脚:
在这里插入图片描述

4. 外部中断

外部中断由GPIO完成,pyBoard上基本每一个IO都有外部中断功能,外部中断的构造函数和调用方法如下所示:
在这里插入图片描述
外部中断示例方法:

from pyb import Pin,ExtInt,LED

callback = lambda e: LED(4).toggle()
#下降沿触发,打开上拉电阻
ext = ExtInt(Pin('Y1'), ExtInt.IRQ_FALLING, Pin.PULL_UP, callback) 

5. I2C总线

以OLED和pyBoard的I2C通信为例,连接OLED的引脚分别是Y8(SDA)和Y6(SCL)。本例程使用MicroPython的Machine模块来定义Pin口和I2C初始化。
Mchine中的Pin的构造函数和使用方法:
在这里插入图片描述
Machine中的I2C的构造函数和使用方法:
在这里插入图片描述
在这里插入图片描述
示例代码如下:

from machine import I2C,Pin         #从machine模块导入I2C、Pin子模块
from ssd1306 import SSD1306_I2C     #从ssd1306模块中导入SSD1306_I2C子模块

i2c = I2C(sda=Pin("Y8"), scl=Pin("Y6"))   #pyBoard I2C初始化:sda--> Y8, scl --> Y6
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c) #OLED显示屏初始化:128*64分辨率,OLED的I2C地址是0x3c

oled.text("Hello World!", 0,  0)      #写入第1行内容
oled.text("MicroPython",  0, 20)      #写入第2行内容
oled.text("By 01Studio",  0, 50)      #写入第3行内容

oled.show()   #OLED执行显示

6. ADC

pyBoard中内置的ADC的构造函数和调用方法为:
在这里插入图片描述
示例代码:

#导入相关模块
import pyb
from machine import Pin,I2C

#初始化相关模块
i2c = I2C(sda=Pin("Y8"), scl=Pin("Y6"))
adc = pyb.ADC('X7') #Pin='X7'

7. DAC

pyBoard中内置的DAC的构造函数和调用方法为:

在这里插入图片描述
示例代码:

from pyb import DAC,Switch
from machine import Pin,I2C


#初始化相关模块
i2c = I2C(sda=Pin("Y8"), scl=Pin("Y6"))

sw = Switch()     #定义按键对象名字为sw
dac = DAC(1)     #定义DAC对象名字为dac,输出引脚为X5

#定义4组频率值:1Hz、200Hz、1000Hz、5000Hz
freq=[1,200,1000,5000]

# 定义8位精度下方波的值。0、255分别对应输出0V、3.3V。需要定义成字节数组。
buf = bytearray(2)
buf[0]=0
buf[1]=255

key_node = 0  #按键标志位
i = 0         #用于选择频率数组

#  按键和其回调函数
def key():
    global key_node
    key_node = 1

sw.callback(key)  #当按键被按下时,执行函数key()

while True:
    if key_node==1: #按键被按下
        i = i+1
        if i == 4:
            i = 0
        key_node = 0 #清空按键标志位
        #DAC输出指定频率
        dac.write_timed(buf, freq[i]*len(buf), mode=DAC.CIRCULAR)

8. UART

pyBoard中一共有六个串口,其中串口5用作REPL调试,可供我们使用的的串口和对应的引脚如下所示:
在这里插入图片描述
在这里插入图片描述
pyb中UART的构造函数和使用方法如下所示:
在这里插入图片描述
在这里插入图片描述
UART的代码示例:

#导入串口模块
from pyb import UART

uart=UART(3,115200) #设置串口号3和波特率,TX--Y9,RX--Y10

uart.write('Hello 01Studio!')#发送一条数据

while True:

    #判断有无收到信息
    if uart.any():
        text=uart.read(64) #默认单次最多接收64字节
        print(text) #通过REPL打印串口3接收的数据

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!