【Micropython Pitaya Lite教程】点亮led

举报
人才程序员 发表于 2024/09/14 19:11:24 2024/09/14
【摘要】 @TOC 前言Micropython Pitaya Lite是一款基于Micropython的开发板,它结合了Pitaya Go和ESP32的优势,为用户提供了一个便捷的开发平台。在本教程中,我们将向您展示如何使用Micropython Pitaya Lite来控制板载LED,让您快速上手并体验到其强大的功能。 GPIO的工作模式GPIO是"General Purpose Input/Out...

@TOC


前言

Micropython Pitaya Lite是一款基于Micropython的开发板,它结合了Pitaya Go和ESP32的优势,为用户提供了一个便捷的开发平台。在本教程中,我们将向您展示如何使用Micropython Pitaya Lite来控制板载LED,让您快速上手并体验到其强大的功能。


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('PA1', 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('A1', 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 = ['A1', 'A2', 'A3', 'A4']

# 初始化引脚对象
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 Pitaya Lite开发板点亮LED。我们首先了解了Micropython的基本语法和开发环境设置,然后编写了简单的代码来控制LED的亮灭。通过这个简单的例子,我们可以更好地理解Micropython Pitaya Lite的使用方法,为进一步的项目开发打下了坚实的基础。希望本教程能够帮助您更好地利用Micropython Pitaya Lite进行开发,并在您的项目中取得成功。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。