5.2 综合案例- 继电器控制

  • 1.继电器控制
    • (1)案例说明
    • (2)接线(M320 GPIO19引脚不受控 需要更换其他引脚)
    • (3)代码

1.继电器控制

(1)案例说明

  • 案例通过4个触摸按键分别控制4个继电器通断(线路麻烦,并联电路比较多)。

  • 触摸按键原理类似于按钮开关。

  • 继电器是利用电磁原理工作的一种开关元件。利用电磁原理使衔铁吸合或断开,以实现其触点控制电气线路中的通或断。

(2)接线(M320 GPIO19引脚不受控 需要更换其他引脚)

 本案例使用了一块两路高电平触发的继电器模块,其触发引脚分别接到了GPIO31和GPIO32。使用了两块一路的低电平触发的继电器模块,其触发引脚分别接到了GPIO19和GPIO20上。使用了4个触摸按键,按键引脚分别接入到了GPIO18、GPIO17、GPIO16、GPIO15上,来实现继电器开和闭。

注意:由于开发板上的io口的驱动能力不同,以5V光耦继电器模块为例,当前案例中的由高电平触发的继电器模块的触发引脚接入到了排母中的IO口上了,低电平触发的继电器模块的触发引脚接入到了 非排母处的IO口上了。


(3)代码

  • main.py

import utime as time
from driver import GPIO
#中断回调函数
def key1_callback(args):global flag1if flag1==1:led1.write(1)relay_1.write(1)flag1=2elif flag1==2:led1.write(0)relay_1.write(0)flag1=1 print("level of led1:{},relay_1:{}".format(led1.read(),relay_1.read()))    key1.disableIrq()key1.clearIrq()def key2_callback(args):global flag2if flag2==1:led2.write(1)relay_2.write(1)flag2=2elif flag2==2:led2.write(0)relay_2.write(0)flag2=1 print("level of led2:{},relay_2:{}".format(led2.read(),relay_2.read()))        key2.disableIrq()key2.clearIrq()def key3_callback(args):global flag3if flag3==1:led3.write(1)relay_3.write(1)flag3=2elif flag3==2:led3.write(0)relay_3.write(0)flag3=1print("level of led3:{},relay_3:{}".format(led3.read(),relay_3.read()))        key3.disableIrq()key3.clearIrq()    def key4_callback(args):global flag4if flag4==1:led4.write(1)relay_4.write(1)flag4=2elif flag4==2:led4.write(0)relay_4.write(0)flag4=1 print("level of led4:{},relay_4:{}".format(led4.read(),relay_4.read()))        key4.disableIrq()key4.clearIrq()if __name__ == '__main__':global flag1,flag2,flag3,flag4flag1=1flag2=1flag3=1flag4=1#实例化key1key1=GPIO(10,10)key2=GPIO(10,10)key3=GPIO(10,10)key4=GPIO(10,10)#打开key1key1.open("key1")key2.open("key2")key3.open("key3")key4.open("key4")#实例化led1led1=GPIO()led2=GPIO()led3=GPIO()led4=GPIO()#打开led1led1.open('led1')led2.open('led2')led3.open('led3')led4.open('led4')#实例化relayrelay_1=GPIO()relay_2=GPIO()relay_3=GPIO()relay_4=GPIO()#打开relay_1.open("relay_1")relay_2.open("relay_2")relay_3.open("relay_3")relay_4.open("relay_4")time.sleep(2)#打开按键使能while True:time.sleep(1)key1.enableIrq(key1_callback)key2.enableIrq(key2_callback) key3.enableIrq(key3_callback)  key4.enableIrq(key4_callback)
  • board.json
{"version": "2.0.0","io": {"led1": {"type": "GPIO","port": 6,"dir": "output","pull": "pullup"},"led2": {"type": "GPIO","port": 7,"dir": "output","pull": "pullup"},"led3": {"type": "GPIO","port": 8,"dir": "output","pull": "pullup"},"led4": {"type": "GPIO","port": 9,"dir": "output","pull": "pullup"},"key1": {"type": "GPIO","port": 18,"dir": "irq","pull": "pullup","intMode":"rising"},"key2": {"type": "GPIO","port": 17,"dir": "irq","pull": "pullup","intMode":"rising"},"key3": {"type": "GPIO","port": 16,"dir": "irq","pull": "pullup","intMode":"rising"},"key4": {"type": "GPIO","port": 15,"dir": "irq","pull": "pullup","intMode":"rising"},    "relay_1": {"type": "GPIO","port": 31,"dir": "output","pull": "pullup"},    "relay_2": {"type": "GPIO","port": 32,"dir": "output","pull": "pullup"},                 "relay_3": {"type": "GPIO","port": 20,"dir": "output","pull": "pullup"},   "relay_4": {"type": "GPIO","port": 19,"dir": "output","pull": "pullup"},                 "serial1": {"type": "UART","port": 0,"dataWidth": 8,"baudRate": 115200,"stopBits": 1,"flowControl": "disable","parity": "none","timeout": 1000},"serial2": {"type": "UART","port": 1,"dataWidth": 8,"baudRate": 9600,"stopBits": 1,"flowControl": "disable","parity": "none","timeout": 1000},"serial3": {"type": "UART","port": 2,"dataWidth": 8,"baudRate": 115200,"stopBits": 1,"flowControl": "disable","parity": "none","timeout": 1000}            },"debugLevel": "ERROR"}

5.2 综合案例- 继电器控制相关推荐

  1. 5.2 综合案例-继电器控制

    5.2 综合案例-继电器控制 1.继电器 1.继电器  本案例使用了一块两路高电平触发的继电器模块,其触发引脚分别接到了GPIO31和GPIO32.使用了两块一路的低电平触发的继电器模块,其触发引脚分 ...

  2. WEB综合案例 黑马面面 day04 用户与角色绑定功能 登录用户菜单控制和权限效验

    WEB综合案例 day04 用户与角色绑定功能 登录用户菜单控制和权限效验 1. 用户与角色 思路: 根据用户去找角色的信息,然后需要用到两个表的查询,在前端页面显示信息的时候用for:each通过遍 ...

  3. 5.39 综合案例2.0 - STM32蓝牙遥控小车2(语音控制)

    综合案例2.0 - 蓝牙遥控小车1- 语音控制 成品展示 案例说明 器件说明 小车连线 小车源码 语音模块遥控 语音遥控连线 模块使用说明 1.MLT-BT05 4.0 蓝牙模块 2.ASRPRO-2 ...

  4. 5.5 综合案例1.0-电力采集

    综合案例-电力采集 1.简介 1.1 BL0939芯片 1.2 语音合成 1.3 注意事项 2.阿里云端设置 3.测试代码 - main.py - app_relay.py - app_led.py ...

  5. 7.1 HaaS506 -HD1综合案例 - 智能路灯

    HaaS506 -HD1综合案例 - 智能路灯 简介 准备 硬件连接图 功能实现 1.物联网平台开发 2.设备端开发 代码测试 应用开发 3.1新建'普通项目' 3.2关联产品和设备 3.3新建'移动 ...

  6. 5.38 综合案例2.0 -语音助手(短信,蓝牙,M2M设备间通信)

    综合案例2.0 - 语音助手 效果展示 案例说明 原理 器件 语音助手功能实现 1,ASRPRO-2m模块 下载代码连线 模块编程说明 2,模块与开发板接线 3,语音助手代码 功能1:语音发短信说明 ...

  7. CSS盒子模型(border、padding、margin、圆角边框、盒子阴影、文字阴影、新闻列表综合案例、新浪导航栏案例)

    1. 网页布局的本质 首先利用CSS设置好盒子的大小,然后摆放盒子的位置. 最后把网页元素比如文字图片等等,放入盒子里面. 以上两步 就是网页布局的本质 2. 盒子模型(Box Model) 盒子模型 ...

  8. 《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例

    本节书摘来异步社区<Unity 4 3D开发实战详解>一书中的第6章,第6.7节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区" ...

  9. 复习Collection_迭代器使用细节_泛型_综合案例

    Collection_迭代器使用细节_泛型_综合案例 主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collection集合 1.1 集合概述 集合:集合是java中提供的一种 ...

最新文章

  1. linux c 并行编程从入门到精通,VISUAL STUDIO 2010并行编程从入门到精通(微软技术丛书)...
  2. jqGrid + JSON + WebService 完整示例
  3. 2015《大数据》读者意见征集活动——幸运读者名单
  4. java poi 导出excel 速度慢_java POI技术之导出数据优化(15万条数据1分多钟)
  5. 自定义的Spinner文字居中
  6. Windows下误删文件解决办法
  7. 记TensorFlow项目开源一周年
  8. 网络安全态势感知(NSSA)----引言
  9. 可行性研究报告计算机,台式计算机项目可行性研究报告范文.doc
  10. 常用网线类别介绍(超五类、六类)
  11. 获评优秀案例!IMG光线追踪技术实现卓越云游戏体验
  12. Java 开通会员增加会员天数(LocalDateTime)
  13. 【蓝桥杯】~C语言数组排序
  14. docker部署eureka时无法启动容器(问题解决)
  15. L1-1 寻找250(10 分)
  16. python大数据工程师需要掌握哪些_大数据工程师 python
  17. 名帖43 梁启超 隶书《临张迁碑》
  18. matlab RGB到HSI的彩色转换及实现
  19. 数字分割(拆数字)的两种方法
  20. 小程序授权信息是保存在微信服务器,微信小程序登陆,授权,手机号授权流程及滚动穿透,保存图片等问题...

热门文章

  1. 删除U盘文件显示 无法删除:目录不为空 解决办法
  2. 用计算机图形学画字母,计算机图形学画多边形.doc
  3. 企业微信设置欢迎语的方法以及应用
  4. 使用QGIS转换矢量数据投影
  5. 微信小程序--计算器(附源码下载地址)
  6. 【云原生 | 从零开始学Docker】七丶实战提交自己的镜像以及docker网络
  7. vue模板文件使用的方法
  8. 已经push的如何回退_git撤销commit,回退已经push的文件
  9. AdobePhotoshop2022闪退
  10. 新威驰2月28日正式上市预计售价9万起