【Micropython教程】点亮第一个LED与流水灯

news2024/10/6 4:08:20

文章目录

  • 前言
  • MicroPython在线仿真
  • GPIO的工作模式
  • 一、有哪些工作模式?
    • 1.1 GPIO的详细介绍
    • 1.2 GPIO的内部框图
      • 输入模式
      • 输出部分
  • 一、machine.Pin类
    • 1.1 machine.Pin 类的构造对象
    • 1.2 machine.Pin 类的方法
      • init方法
      • value方法
      • 设置高低电平方法
    • 二、延时函数
  • 三、流水灯
  • 总结


前言

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打下了坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1476869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6U VPX全国产飞腾D2000/8核+复旦微FPGA信息处理主板

产品特性 产品功能 飞腾计算平台,国产化率100% VPX-MPU6503是一款基于飞腾D2000/8核信息处理主板,采用由飞腾D2000处理器飞腾X100桥片的高性能计算机模块,双通道16G贴装内存,板载128G 固态SSD;预留固态盘扩展接口&…

通过XML调用CAPL脚本进行测试(新手向)

目录 0 引言 1 XML简介 2 通过XML调用CAPL脚本 0 引言 纪念一下今天这个特殊日子,四年出现一次的29号。 在CANoe中做自动化测试常用的编程方法有CAPL和XML两种,二者各有各的特色,对于CAPL来说新手肯定是更熟悉一些,因为说到在C…

循环结构:for循环,while循环,do-while,死循环

文章目录 for循环for案例:累加for循环在开发中的常见应用场景 whilewhile循环案例: for和while的区别:do-while三种循环的区别小结死循环 快捷键 ctrlaltt for循环 看循环执行多少次,就看有效数字有几个 快捷键 fori 示例代码&am…

测评ONLYOFFICE 8.0版本:办公利器再升级

测评ONLYOFFICE 8.0版本:办公利器再升级 前言注册使用升级功能速览全新外观设计wordexcelPPTPDF 协作功能强化更强大的功能复杂表单的填写 移动端优化结语 前言 随着科技的不断发展,办公软件在提升用户体验和工作效率方面扮演着越来越重要的角色。作为一…

Apache的安装与配置(使用)

目录 前言 一,安装 1. centos上安装Apache 1.1 基本使用 启动 停止 检查 测试运行 设置开机启动 2. 部署web 下载 解压 安装mysql数据库 安装php7.3 3.安装wordpress httpd命令语法解释 httpd几个常用目录 httpd常用的协议状态码解释 前言 apache…

基于stm32F103的座面声控台灯

1.基本内容: 设计一个放置在桌面使用的台灯,使用220v交流电供电。具备显示屏能够实时显示日期(年、月、日和星期),时间(小时、分钟、秒)和温度(摄氏度);能够通…

3D数字孪生

数字孪生(Digital Twin)是物理对象、流程或系统的虚拟复制品,用于监控、分析和优化现实世界的对应物。 这些数字孪生在制造、工程和城市规划等领域变得越来越重要,因为它们使我们能够在现实世界中实施改变之前模拟和测试不同的场景…

vmware安装centos 7.9 操作系统

vmware安装centos 7.6 操作系统 1、下载centos 7.9 操作系统镜像文件2、安装centos 7.9 操作系统3、配置centos 7.6 操作系统3.1、配置静态IP地址 和 dns3.2、查看磁盘分区3.3、查看系统版本 1、下载centos 7.9 操作系统镜像文件 本文选择centos 7.9 最小化安装镜像包 这里选…

云尚办公-0.0.3

5. controller层 import pers.beiluo.yunshangoffice.model.system.SysRole; import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//RestController:1.该类是控制器;2.方法返回值会被写进响应报文的报文体,而…

express+mysql+vue,从零搭建一个商城管理系统3--user路由模块

提示:学习express,搭建管理系统 文章目录 前言一、新建routes文件夹二、新建routes/index.js和routes/user.js三、修改index.js四、修改routes/index.js五、修改routes/user.js六、启动项目预览总结 前言 需求:主要学习express,所…

Adobe Acrobat DC中如何合并pdf并生成目录

一、利用 Acrobat 合成pdf目录 (一)新建标签(更改标签等级等) 1,用Adobe acrobat 软件打开待添加书签的pdf文档。 2,打开之后点击软件左边栏的书签(有时被隐藏了,点击一下界面左边…

电脑周末设置节日提醒倒计时方法教程

每当节日临近,无论是传统的元宵节、端午节,还是其他各种特殊的日子,我总期待着能与家人团聚,或是为自己准备一份小惊喜,享受那份独特的仪式感。 但生活的忙碌和琐碎的事情常常让我忘记这些重要的日子。有时&#xff0…

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录 前言一、通过Spectator获取坐标二、通过道路ID获取坐标总结 前言 CARLA没有直接的方法给使用者查找地图坐标点来生成车辆,这里推荐两种实用的方法在特定的地方生成车辆。 一、通过Spectator获取坐标 1、Spectator(观察者)&#xf…

文件拖放到窗体事件

网上的实现1 实现结果 具体实现代码:注意需要使能允许拖拽 public partial class Form1 : Form {public Form1(){InitializeComponent();this.AllowDrop true; //允许拖拽}private void Form1_DragEnter(object sender, DragEventArgs e){this.Text DateTime.No…

结合CMD文件,将变量写到ROM和Falsh中

结合CMD文件,将变量写到ROM和Falsh中 RAM是一种易失性存储器,它用于临时存储计算机程序和数据。当计算机关闭或断电时,RAM中的数据将丢失。RAM具有很快的读写速度,但容量有限。 Flash是一种非易失性存储器,它可以长期存储数据而不会丢失。Flash存储器通常用于存储操作系统…

【Linux】云服务器的Redis被黑

📝个人主页:五敷有你 🔥系列专栏:Linux ⛺️稳中求进,晒太阳 攻击发现: 这个异常情况是在腾讯云被入侵后,短信提醒发现的。并没有系统的学习过关于服务器安防相关的知识,遇到…

【ElfBoard】基于 Linux 的智能家居小项目

大家好,我是 Hello阿尔法,这段时间参与了保定飞凌嵌入式技术有限公司举办的 ElfBoard 共创社招募活动,并有幸成为了一名共创官,官方寄来了一块 ELF 1 开发板,开箱看这里 ELF 1 开箱初体验。 作为共创官,我…

❤ git操作Github、git操作github

❤ git操作Github 1、设置用户名和邮件地址 git config --global user.name "nexuslin" git config --global user.email "2455067339qq.com"2、生成本地密钥 ssh-keygen -t rsa -C 2455067339qq.com3、接下来就一直回车,然后再去 C:\Users…

VR危险环境模拟介绍|VR虚拟现实设备

VR危险环境模拟是指利用虚拟现实技术来模拟和展现各种危险环境,以便训练人员应对紧急情况、提高安全意识和应急反应能力。这种模拟可以涉及到工业、医疗、紧急救援等多个领域,旨在帮助人们在真实环境中面对危险时能够做出正确的应对和决策。 VR危险环境…

进销存是什么意思?如何开发一款进销存管理系统?

这篇给大家详细介绍一下,进销存到底是什么,进销存管理系统有什么用?企业如何开发一款进销存管理系统? 以下内容示例工具均来自于JDY——https://www.jiandaoyun.com 一、进销存是什么? 1、基本概念 进销存&#xff0…