IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 5.2 综合案例-继电器控制 -> 正文阅读

[嵌入式]5.2 综合案例-继电器控制

5.2 综合案例-继电器控制

1.继电器

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


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

  • 只能低电平触发的继电器模块





  • 高低电平都可以触发的继电器模块

在这里插入图片描述

  • main.py

import utime as time
from driver import GPIO
#中断回调函数
def key1_callback(args):
    global flag1
    if flag1==1:
        led1.write(1)
        relay_1.write(1)
        flag1=2
    elif 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 flag2
    if flag2==1:
        led2.write(1)
        relay_2.write(1)
        flag2=2
    elif 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 flag3
    if flag3==1:
        led3.write(1)
        relay_3.write(1)
        flag3=2
    elif flag3==2:
        led3.write(0)
        relay_3.write(0)
        flag3=1
    print("level of led3:{},relay_3:{}".format(led3.read(),relay_3.read()))        
    key3.disableIrq()
    key3.clearIrq()    

def key4_callback(args):
    global flag4
    if flag4==1:
        led4.write(1)
        relay_4.write(1)
        flag4=2
    elif 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,flag4
    flag1=1
    flag2=1
    flag3=1
    flag4=1
    #实例化key1
    key1=GPIO(10,10)
    key2=GPIO(10,10)
    key3=GPIO(10,10)
    key4=GPIO(10,10)
    #打开key1
    key1.open("key1")
    key2.open("key2")
    key3.open("key3")
    key4.open("key4")
    #实例化led1
    led1=GPIO()
    led2=GPIO()
    led3=GPIO()
    led4=GPIO()
    #打开led1
    led1.open('led1')
    led2.open('led2')
    led3.open('led3')
    led4.open('led4')

    #实例化relay
    relay_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": "1.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"
    }
  
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:45:28  更:2022-03-10 22:47:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:40:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码