Micropython ESP8266板入门指南(二)开关控制负载

Micropython ESP8266板入门指南(二)开关控制负载

(一)USB接口电路使
用CH340G接口芯片,所以要用CH341SER驱动程序。
在这里插入图片描述
(二)ESP-12P模块
板载LED灯接在GPIO2脚上
在这里插入图片描述
常用GPIO脚的默认电位:这几只脚IC内已有电阻,不用外接电阻,可以直接接开关。
平时高电位(即IC内用电阻接Vcc的)是:Reset、EN、GPIO0、GPIO2
平时低电位(即IC内用电阻接GND的)是:GPIO15

8266与硬件相关的指令都在machine库中,并根据功能分成不同的类(class),例如,与脚有关的命令在machine库的Pin类中。
在这里插入图片描述
from machine import Pin(from库中只导入脚类)
import machine(导入这个库的所有类)

应用一:读取微动开关控制LED

 from machine import Pin
>>> sw=Pin(0,Pin.IN)
>>> led=Pin(15,Pin.OUT)
>>> while 1:
...     val=sw.value()
...     led.value(val)

运行说明:微动开关接GND和GPIO0脚,LED灯接GPIO15脚;8266循环读取0脚状态,当开关导通0脚低电平;即val的值为0;接15脚的led的值也为0,关灯。

应用二:按一下亮灯,再按一下关灯
(1)简单方案


from machine import Pin    #导入库
import time                #导入控制时间库

toggle=1
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:
        toggle=not toggle
        led.value(toggle)
        

本程序的缺点,按开关时,不是按一下就准确在反转,存在不稳定,主要原因是在while的作用下循环不断地进行,即不断地反转,而造成LED随机亮灭的结果。

(2)优化方案一:在按下开关时(读取开关脚的状态),程序什么也不做,这样就防止进入循环。程序见下:

from machine import Pin    #导入库
import time                #导入控制时间库

toggle=1
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:
        toggle=not toggle  #将toggler的值进行not(反相

)
        led.value(toggle)
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停 

(3)优化方案二:在按下开关时(读取开关脚的状态),对LED灯现状态进行反转,同时程序什么也不做,直至放开开关后再继续循环。对比优化方案一程序少了两行命令。程序见下:

from machine import Pin    #导入库
import time                #导入控制时间库

led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:               #如果按下开关
        led.value(not led.value())  #对LED状态进行反转
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停           

(4)优化进阶:消除开关切换时振动造成的开关铜片弹跳现象。方法是进行2-30毫秒的延时。


from machine import Pin    #导入库
import time                #导入控制时间库

led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:               #如果按下开关
        time.sleep(0.1)             #延时0.1秒,或写成time.sleep_ms(100)
        led.value(not led.value())  #对LED状态进行反转
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停

(5)增加一个LED2灯与LED灯成反相

from machine import Pin    #导入库
import time                #导入控制时间库
led2=Pin(9,Pin.OUT)
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:               #如果按下开关
        time.sleep(0.1)             #延时0.1秒
        led.value(not led.value())  #对LED状态进行反转
        led2.value(not led.value())
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停

(六)增加一个副程序(MINI)。主程序main.py ;副程序 MINI.py
主程序

#main.py
from machine import Pin    #导入库
import time                #导入控制时间库
import MINI                #导入副程序MINI
led2=Pin(9,Pin.OUT)
led=Pin(15,Pin.OUT)
sw=Pin(0,Pin.IN)

while True:
    if sw.value()==0:               #如果按下开关
        MINI.hello()                #运行MINI中的自定义函数hello
        time.sleep(0.1)             #延时0.1秒
        led.value(not led.value())  #对LED状态进行反转
        led2.value(not led.value())
        while sw.value()==0:   #while(当)开关按下时
            pass               # 什么也不做,暂停 

副程序

#MINI.py
def hello():
    print("hello")
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Micropython ESP8266 串口是一种用于ESP8266芯片的串口通信协议,可以通过该协议实现ESP8266芯片与其他设备之间的数据传输。Micropython是一种基于Python语言的微型操作系统,可以在ESP8266芯片上运行,提供了丰富的库函数和API接口,方便开发者进行开发和调试。通过Micropython ESP8266 串口,开发者可以轻松地实现ESP8266芯片与其他设备之间的通信,例如与传感器、执行器、显示屏等设备进行数据交互。 ### 回答2: Micropython支持ESP8266的串口通讯,这使得ESP8266可以使用python语言进行编程。在ESP8266中,通常有两个串口可用:硬件串口和软件串口。 硬件串口是指在ESP8266芯片内部集成的串口,通常可用于连接外设,如传感器、显示器、WiFi模块等。硬件串口是高速的,通常可达到115200、230400、460800等波特率。 软件串口是指通过GPIO模拟实现的串口功能。软件串口的波特率通常较慢,最高可达到19200波特率。但软件串口的好处是可随意选择任何GPIO引脚作为串口通讯端口,从而使得它更加灵活。 在Micropython中,使用`machine`模块的`UART`类实现串口通讯。下面是一个基本的代码示例: ``` import machine uart = machine.UART(0, 115200) #创建一个UART对象,设置波特率为115200 uart.write('Hello, world!') #发送数据 data = uart.read(10) #读取10个字节的数据 print(data) #打印读取的数据 ``` 在上面的代码中,`UART`类的第一个参数`0`表示使用硬件串口,第个参数`115200`表示设置波特率为115200。`write()`方法发送数据,`read()`方法读取数据。如果要使用软件串口,可以将`UART`类的第一个参数换成对应的GPIO引脚。 使用Micropython实现ESP8266串口通讯,可以让开发者使用简洁的python语言进行开发和调试,提高开发效率。同时,由于Micropython支持的语言特性和库非常丰富,可以大大降低开发的难度。 ### 回答3: Micropython是一个小型的Python解释器,它可以在微控制器上运行。而ESP8266则是一款完整的WiFi芯片,它的处理器集成了TCP/IP协议栈和一些通用IO口,因此它可以作为物联网设备的核心控制器使用。在使用ESP8266进行开发时,串口是一种非常常见的通信方式。那么,如何在Micropython中使用ESP8266的串口呢? 首先,需要导入机器模块和UART(串口)模块: ```python from machine import UART ``` 接着,创建一个UART对象: ```python uart = UART(0, 115200) # 初始化并设置波特率为115200 ``` 其中,参数0表示使用串口0,波特率为115200。当然,也可以使用其它的串口和波特率。 接下来就可以使用串口进行通信了。例如,通过串口发送一段数据: ```python uart.write('Hello, World!\n') ``` 这行代码将会向串口发送字符串“Hello, World!”并换行。需要注意的是,Micropython的串口写操作和Python的print函数不同,不会自动添加换行符。 当然,也可以通过串口读取数据。例如,读取一个字节: ```python data = uart.read(1) # 读取1个字节 ``` 这行代码将会从串口读取一个字节数据,并将结果保存在data变量中。如果要读取更多的字节,可以增加参数。如: ```python data = uart.read(10) # 读取10个字节 ``` 当然,读取串口时也可以使用不同的阻塞模式。默认情况下,读取串口时会一直等待,直到有数据可读。如果想要在没有数据的情况下立即返回,可以使用UART的相应方法。如: ```python data = uart.read(10) # 读取10个字节 uart.readinto(buf) # 将数据读取并存储到buf中 uart.any() # 返回当前接收缓冲区中的字节数 ``` 最后,需要注意的是,Micropython的串口功能与Python中的serial库有所不同,特别是在串口读取时。有些主机操作系统上的串口接口并不支持非常灵活的非阻塞读取,因此在实际使用中需要多加注意。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值