移远QuecPython(基于EC600s)开发物联网应用(二) GPIO PWM ADC UART

news/2024/11/21 0:28:36/

一. GPIO

1. 创建gpio对象

from machine import Pin
gpio = Pin(GPIOn, direction, pullMode, level)

参数:

  • GPIOn: 引脚号 int类型
EC600SCN/EC600NCN平台引脚对应关系如下(引脚号为模块外部引脚编号):
GPIO1 – 引脚号10
GPIO2 – 引脚号11
GPIO3 – 引脚号12
GPIO4 – 引脚号13
GPIO5 – 引脚号14
GPIO6 – 引脚号15
GPIO7 – 引脚号16
GPIO8 – 引脚号39
GPIO9 – 引脚号40
GPIO10 – 引脚号48
GPIO11 – 引脚号58
GPIO12 – 引脚号59
GPIO13 – 引脚号60
GPIO14 – 引脚号61
GPIO15 – 引脚号62
GPIO16 – 引脚号63
GPIO17 – 引脚号69
GPIO18 – 引脚号70
GPIO19 – 引脚号1
GPIO20 – 引脚号3
GPIO21 – 引脚号49
GPIO22 – 引脚号50
GPIO23 – 引脚号51
GPIO24 – 引脚号52
GPIO25 – 引脚号53
GPIO26 – 引脚号54
GPIO27 – 引脚号55
GPIO28 – 引脚号56
GPIO29 – 引脚号57
  • direction : IN – 输入模式,OUT – 输出模式
  • pullMode : 输入输出模式
PULL_DISABLE – 浮空模式
PULL_PU – 上拉模式
PULL_PD – 下拉模式
  • level : 0 - 设置引脚为低电平, 1- 设置引脚为高电平

关于GPIO我想多说一下:
我使用如下语句打印了一下Pin对象

from machine import Pin
print(dir(Pin))

发现和官方文档描述不一致, 让我不知所措😱😱😱, 为什么没有21~29引脚呢? 难道我固件下错了? 难道是这些引脚有其它默认用途??

2. 读取引脚电平

Pin.read()

参数:
返回值
PIN脚电平,0-低电平,1-高电平。

3.设置引脚高低电平

Pin.write(value)

参数:

  • value int 0 - 当PIN脚为输出模式时,设置当前PIN脚输出低;1 - 当PIN脚为输出模式时,设置当前PIN脚输出高

返回值
设置成功返回整型值0,设置失败返回整型值-1。

4. 举例: LED闪烁

为了防止死循环无法跳出,我都用固定次数的循环代替while True

from machine import Pin  # 导入Pin模块
import utime  # 导入utime模块led = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_DISABLE, 0)  # GPIO11配置成输出模式,默认输出0
for i in range(30):led.write(0 if led.read() else 1) #用read读取led的状态,然后取反utime.sleep(1)

5. 举例2: 按键亮灯灭灯

KEY1亮灭灯,KEY2结束程序

from machine import Pin  # 导入Pin模块
import utime  # 导入utime模块key1_pin = Pin.GPIO13 
led1_pin = Pin.GPIO11   
key2_pin = Pin.GPIO12   #用来打破while省的我重新烧固件 led = Pin(led1_pin, Pin.OUT, Pin.PULL_DISABLE, 0)
key1 = Pin(key1_pin, Pin.IN, Pin.PULL_PU, 1)
key2 = Pin(key2_pin, Pin.IN, Pin.PULL_PU, 1)ledflag = True
while key2.read():if not key1.read():utime.sleep_ms(50)if not key1.read():ledflag = not ledflagwhile not key1.read():passled.write(ledflag)utime.sleep_ms(10)print("end")

二. 外部中断

EC600 14个 外部中断引脚。 从GPIO1~GPIO14
EC600SCN平台引脚对应关系如下(引脚号为模块外部引脚编号):
GPIO1 – 引脚号10
GPIO2 – 引脚号11
GPIO3 – 引脚号12
GPIO4 – 引脚号13
GPIO5 – 引脚号14
GPIO6 – 引脚号15
GPIO7 – 引脚号16
GPIO8 – 引脚号39
GPIO9 – 引脚号40
GPIO10 – 引脚号48
GPIO11 – 引脚号58
GPIO12 – 引脚号59
GPIO13 – 引脚号60
GPIO14 – 引脚号61

1. 创建中断

from machine import ExtInt
extint = ExtInt(GPIOn, mode, pull, callback)

参数:

  • GPIOn: 引脚号 int类型
  • mode : 设置触发方式:
    IRQ_RISING – 上升沿触发
    IRQ_FALLING – 下降沿触发
    IRQ_RISING_FALLING – 上升和下降沿触发
  • pull : 初始上下拉
    PULL_DISABLE – 浮空模式
    PULL_PU – 上拉模式
    PULL_PD – 下拉模式
  • callback: 中断触发回调函数

2. 使能extint对象外部中断

extint.enable()

参数
返回值
成功返回整型0,失败返回整型-1。

3. 禁用与extint对象关联的中断

extint.disable()

参数
返回值
成功返回整型0,失败返回整型-1。

4. 返回引脚映射的行号

extint.line()

参数
返回值
引脚映射的行号。

举例: 中断点灯

from machine import ExtInt,PinledFlag = False
key2 = Pin(Pin.GPIO12, Pin.IN, Pin.PULL_PU, 1)
led = Pin(Pin.GPIO11, Pin.OUT, Pin.PULL_PU, 0)
def key1_callback(args):global ledFlagledFlag = not ledFlagprint(args)print("switch led to:" , ledFlag)led.write(ledFlag)key1 = ExtInt(ExtInt.GPIO13, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, key1_callback)
key1.enable()
while key2.read():pass

三. PWM

EC600SCN平台,支持PWM0-PWM3,对应引脚如下:
PWM0 – 引脚号52
PWM1 – 引脚号53
PWM2 – 引脚号70
PWM3 – 引脚号69

1. 创建一个pwm对象

from misc import PWM
pwm = PWM(PWM.PWMn,PWM.ABOVE_xx, highTime, cycleTime)

参数:

2. 开启PWM输出

pwm.open()

参数
返回值
成功返回整型0,失败返回整型-1。

3. 关闭PWM输出

pwm.close()

参数
返回值
成功返回整型0,失败返回整型-1。

4. 举例: 呼吸灯

这个PWM 😂😂, 没用调节占空比的API, 如果我们要做呼吸灯, 只能不断地实例化PWM类😂😂

from misc import PWM
import utimeduty = 1for i in range(10):for i in range(1, 101):duty = ipwm = PWM(PWM.PWM0, PWM.ABOVE_10US, duty, 100)pwm.open()utime.sleep_ms(20)print(duty)for i in range(100, 0,-1):duty = ipwm = PWM(PWM.PWM0, PWM.ABOVE_10US, duty, 100)pwm.open()utime.sleep_ms(20)print(duty)
pwm.close()

四. ADC

EC600S平台支持ADC0,ADC1,对应引脚如下
ADC0 – 引脚号19
ADC1 – 引脚号20

1. 实例化一个ADC对象

from misc import ADC
adc = ADC()

2. 打开adc

adc.open()

参数
返回值
成功返回整型0,失败返回整型-1。

3. 读取指定通道的电压值,单位mV

adc.read(ADCn)

参数

  • ADCn : ADC0 – 引脚号19 ADC1 – 引脚号20

这里我要说一下,官方手册表明两个ADC,但我板子上有4个ADC(ADC0~3), 我看了EC600S的手册的确是2个ADC,可能是开发板为EC600U预留的

返回值
成功返回指定通道电压值,错误返回整型-1。

3. 关闭ADC

adc.close()

参数
返回值
成功返回整型0,失败返回整型-1。

4. 举例 读取输入电压

from misc import ADC
import utime
adc = ADC()for i in range(25):print("reading ADC :",adc.read(ADC.ADC0)/1000,"V")utime.sleep(1)

五. UART

1. 实例化UART对象

from machine import UART
uart1 = UART(UART.UART1, 115200, 8, 0, 1, 0)

参数:

2. 接收缓存器中有多少字节的数据未读

uart.any()

参数
返回值
返回接收缓存器中有多少字节的数据未读。

3. 从串口读取数据

uart.read(nbytes)

参数

  • nbytes : 要读取的字节数

返回值
返回读取的数据。

4. 发送数据到串口。

uart.write(data)

参数

  • data: string类型. 发送的数据

返回值
返回发送的字节数。

5. 关闭串口

uart.close()

参数
返回值
成功返回整型0,失败返回整型-1。

6. 举例: 串口收发

这里, 我们使用Main串口,标号UART.UART2 , 但是注意在开发板上这个Main串口竟然是RXD1 TXD1,不要想当然弄错了 😂😂😂

from machine import UART
from machine import Pin  key2 = Pin(Pin.GPIO12, Pin.IN, Pin.PULL_PU, 1)
uart = UART(UART.UART2, 115200, 8, 0, 1, 0)while key2.read():msgLen = uart.any()if msgLen:msg = uart.read(msgLen)utf8_msg = msg.decode()print(utf8_msg)uart.write('rev msg and send back: ')uart.write(utf8_msg)

http://www.ppmy.cn/news/541353.html

相关文章

MySQL因为hung住,自动重新启动,InnoDB: Semaphore wait has lasted > 600 seconds

从错误日志中检查,有两个信号量等待时间超长,MySQL自动crash了: # grep " 600 " 31-226-mysql-error.log 2021-12-27T02:25:15.086231Z 0 [ERROR] [FATAL] InnoDB: Semaphore wait has lasted > 600 seconds. We intentionall…

移远EC600S-CN (4) - MQTT接入阿里云

MQTT是一种基于 发布/订阅 模式的轻量级通信协议。MQTT专门针对 物联网设备 开发,是一种 低开销、低带宽占用的即时通讯协议。该协议构建于 TCP/IP 上,旨在为低带宽和不稳定网络环境中的物联网设备,提供可靠的网络服务。它的设计思想是简单、…

大学生html5实训心得体会,实训心得体会600字(精选5篇)

实训心得体会600字(精选5篇) 当我们心中积累了不少感想和见解时,写一篇心得体会,记录下来,这样我们就可以提高对思维的训练。但是心得体会有什么要求呢?下面是小编帮大家整理的实训心得体会600字(精选5篇),欢迎阅读,希望大家能够喜欢。 实训心得体会600字1 时间过的真快,…

移远ec200/600的使用

移远ec200、ec600的使用: linux2.6.22 pppd-2.4.4 ec600s 参考的是ec200s的拨号相关文档: 1:/driver/usb/serial/option.c更改了4个位置,并没 有严格按照ec200s的指导文档来(2.6.30以上、3.0以上内核还会涉及wwan、qcserial相…

HaaS600物联网开发板学习笔记(一)---开发板硬件资源

摘要:2020年9月阿里云HaaS100物联网开发板发布,紧接着600开发板也发布了。二者不同之处有很多,最明显的是100是wifi联网,600是gprs联网,也就是“wifi和插卡”的区别。本篇文章开始,将最近一段时间调试HaaS6…

赛6,赛600, 追6 , 追600 无钥匙系统功能升级说明 龙头锁

鉴于原车无钥匙系统功能过于单一,体验方面不够完美,进行如下功能增加以提高用户体验。 大家在用车的过程,如果有什么新的想法和建议欢迎讨论分享。 新增功能汇总: 一.NFC功能 通过NFC 解锁上电,可以刷卡或者刷nfc手机&#xff0c…

600分左右的计算机院校,这11所985大学600分左右就能考,快来捡漏!

从2016年起,我国已经在事实上停止了“985工程”、“211工程”建设,并从2019年起统筹为“双一流”建设,但是985大学作为我国高校中的“天花板”——全国仅39所学校获此殊荣,在社会上早已深入人心,无论是在就业、考研深造各方面都具有优势。所以,即使已经成为历史名词,原9…

html600像素宽如何设置,最小尺寸不得小于600像素(宽)*600像素(高)。最大尺寸不得超过1200像素(宽)*1200像素(高)。...

接美国大使馆消息,自2010年3月1日起,需要办理美国签证的申请人需要在线填写新的美国签证申请表格和新的美国签证照片,本人对美国签证照片最新要求: 递交的数码照片必须符合以下说明的规格。 注意: 如果未能满足以下要求中的任何一条&#xff…