0
点赞
收藏
分享

微信扫一扫

Kafka的消费流程

文章目录


前言

MicroPython是一种精简版的Python 3编程语言,专为微控制器和嵌入式系统设计。它提供了一个简洁而强大的工具集,使得开发者可以轻松地在微控制器上编写Python代码,实现各种功能。本教程将介绍如何使用MicroPython点亮第一个LED,并实现一个简单的流水灯效果,帮助初学者快速入门MicroPython的基础知识。


MicroPython在线仿真

Micropython在线仿真

GPIO的工作模式

GPIO是"General Purpose Input/Output"(通用输入/输出)的缩写。它是现代微控制器(MCU)或嵌入式系统中的一种重要接口,用于连接外部设备和传感器。每个GPIO引脚可以被配置为输入或输出,并且可以通过软件控制其电平状态。
GPIO就是我们开发板上的针脚

以下内容引用自我的博客GPIO

一、有哪些工作模式?

1.1 GPIO的详细介绍

GPIO是General-purpose and alternate-function I/Os的缩写
他的含义是:通用和复用的引脚

GPIO是分组的,每一组有很多引脚
比如说PA0、PA1…PA15,一组GPIO有16个引脚
组数是由芯片决定的,具体的组数可以看对应的芯片的原理图

1.2 GPIO的内部框图

我们可以在芯片手册中找到GPIO的对应框图,他说对于某一个引脚的:
在这里插入图片描述
他可以分为两部分,上部分就是输入,下部分就是输出

输入模式

输入模式的框图如下:
在这里插入图片描述
要理解他,我们可以看下面的图:
在这里插入图片描述

我们通过配置pin1让他为输入,然后我们读某个寄存器就可以得到他的状态。
当k1按下,接到电源,那么pin肯定状态是1高电平,如果没有按下,相当于这个引脚是悬空状态
那么你读这个值,你知道他是什么状态吗,可能读出来是1,可以是0

再比如,我们配置pin2让他为输入,和上面一样,我们也去读,按下时为0,那么没有按下是什么状态呢,就和上面的是一样的了

那么我们怎么解决他这个问题呢
对于pin1我们可以加一个下拉电阻
在这里插入图片描述
那么他按下时就就会是高电平,没按就是低电平

同样的对于pin2,就需要加上拉电阻了
在这里插入图片描述
那么他按下时就就会是低电平,没按就是高电平

所以上下拉电阻是需要看实际的情况来选择的。

这些电阻集成到了芯片,我们可以直接设置他,是上拉还是下拉,我们就不用每一个都搞一个电阻了

回到框图:
在这里插入图片描述
其中,里面的VDD为上拉电阻
Vss为下拉电阻,他在芯片中已经设计好的了

还有一种输入就是 Analog Input,模拟输入,那么模拟输入的话,他需要得到具体的电压值,所以我们不能设置上下拉电阻,完全由外部电路控制,要不然模拟输入和直接输入没两样了

那么输入就是这几部分:上拉输入、下拉输入、浮空输入、模拟输入

在最后我们通过读取输入寄存器:Input data register,得到1/0

如果说他有毛刺怎么办:他会在某一个范围电压内为1,某一个电压范围为0

输出部分

在这里插入图片描述
他这个GPIO可以接到一个灯,或者其他的芯片
如果是点灯,那么电压肯定是越高越好
如果是关灯,电压肯定是越低越好

当输出1时,I/O pin连接到P-MOS的VDD,然后就能点灯了
如果输出0,P-MOS断开,连接地,所以就关灯
推挽输出:当你要高电平,就推到VDD,如果要低电平,就推到VSS这样就是推挽输出,可以输出高低电平

开漏输出:
在开漏输出中,有两种状态:开和关。当开漏输出为开启状态时,它会将电路连接到地(或负极),使得电路的输出变为低电平。而当开漏输出为关闭状态时,它不会连接到任何地方,使得电路的输出由外部设备或其他电路来控制。

开漏输出一般是用来解决两个芯片通信的问题的
不至于把两个芯片搞坏

一、machine.Pin类

1.1 machine.Pin 类的构造对象

在MicroPython中,machine.Pin类用于与硬件引脚进行交互,包括读取和设置引脚状态。下面是关于machine.Pin类的构造和参数的介绍:

构造对象的方式:

pin_object = machine.Pin(pin_number, mode, pull, value)

参数说明:
pin_number(必需): 这是一个整数,代表硬件引脚的编号。这个参数指定了我们要控制的具体引脚。

mode(可选,默认为machine.Pin.OUT): 这是一个整数,表示引脚的模式。可以是以下几个常量之一:
machine.Pin.IN:输入模式。
machine.Pin.OUT:输出模式。
machine.Pin.OPEN_DRAIN:开漏输出模式。

pull(可选,默认为None): 这是一个整数,表示引脚的上下拉设置。可以是以下几个常量之一:
machine.Pin.PULL_UP:上拉。
machine.Pin.PULL_DOWN:下拉。
None:无上下拉。

value(可选,默认为None): 这是一个整数,表示引脚的初始值。对于输出模式,可以是以下几个常量之一:
machine.Pin.LOW:低电平。
machine.Pin.HIGH:高电平。 对于输入模式,这个参数通常被忽略。
示例:

import machine

# 构造一个引脚对象,设置为输出模式,无上下拉,初始值为低电平
led_pin = machine.Pin(26, mode=machine.Pin.OUT, pull=None, value=1)

在这个示例中,我们创建了一个machine.Pin对象,代表硬件引脚编号为26的引脚。该引脚被配置为输出模式,无上下拉,初始电平为低电平。这样,我们就可以通过led_pin.value(1)将引脚电平设置为高,从而点亮与该引脚连接的LED。

在这里插入图片描述

1.2 machine.Pin 类的方法

init方法

我们可以使用init方法重新初始化引脚:

led.init(mode=-1, pull=-1,value=None)

value方法

我们可以使用value方法设置/获取引脚高低电平

led.value([x])

当无参数时,放回当前的高低电平
如果写了x,则设置高低电平

设置高低电平方法

设置引脚高电平:

led.on()

设置引脚低电平:

led.off()

二、延时函数

在 MicroPython 中,系统延时需要用到 time/utime 模块。该模块下有三个 sleep 方法:

time.sleep(seconds):秒级的延时
time.sleep_ms(ms):毫秒的延时
time.sleep_us(us):微秒的延时

我们有延时函数就可以实现灯的闪烁了:

import machine
import time

# 构造一个引脚对象,设置为输出模式,无上下拉,初始值为低电平
led_pin = machine.Pin(26, mode=machine.Pin.OUT, pull=None, value=1)

while True:
    led_pin.off()
    time.sleep_ms(500)
    led_pin.on()
    time.sleep_ms(500)

三、流水灯

import machine
import time

# 定义LED连接的引脚
led_pins = [2, 3, 4, 5]

# 初始化引脚对象
led_objects = [machine.Pin(pin, machine.Pin.OUT) for pin in led_pins]

# 流水灯效果
while True:
    for led in led_objects:
        led.value(1)  # 点亮LED
        time.sleep(0.1)  # 延时
        led.value(0)  # 关闭LED

总结

通过本教程,我们学习了如何在MicroPython环境下控制LED。首先,我们了解了如何连接开发板和LED。然后,我们使用MicroPython的GPIO模块初始化GPIO引脚,并将其配置为输出模式。接着,我们通过设置GPIO引脚的电平来点亮LED。最后,我们利用循环结构和延时函数实现了一个简单的流水灯效果。通过这个简单的例子,我们初步掌握了MicroPython的基本语法和GPIO控制方法,为进一步学习和应用MicroPython打下了坚实的基础。

举报

相关推荐

0 条评论