饮水机开水前加入童锁判断

news2024/12/29 16:58:03

饮水机开水前加入童锁判断

引言

饮水机加入童锁, 是配合红外线, 进行防误触检测. 我们模仿红外线检测杯子, 加入童锁变量, 这个变量是人工控制的, 开水前,检测一下童锁,如果童锁锁住 , 则不能开水, 我们只需要修改一下底层即可.

本博客修改完的代码工程:

https://wwyz.lanzoul.com/iKHks286941g

代码实操

1.定义童锁变量与结构体

#define lock_child   1	//童锁锁住 
#define Unlock_child 0	//童锁解开 
typedef struct
{
	_Bool Status;	
} Child_Info;

extern Child_Info child_lock_info;
image-20240822231416074

2.定义童锁变量

我们就是在这里 , 可以初始化童锁, 测试是否可以在童锁锁住的时候开水

image-20240822232716423

Child_Info child_lock_info = {1};

3.在out_water.h, 包含定义童锁与红外变量的文件

#include "infrared_cup.h"

4.在out_water.c里面, 出水函数里, 加入童锁判断, 如果锁住, 则不开水

child_lock_info.Status == Unlock_child

image-20240822232453499

void OUT_water_Set(_Bool status)
{
	if(status == out_water_ON && out_water_info.Status != out_water_ON && 
		child_lock_info.Status == Unlock_child
	  )
	{
		GPIO_SetBits(GPIOA, GPIO_Pin_7);
		out_water_info.Status = out_water_ON;		
	}
	else 
	if(
		(status == out_water_OFF && out_water_info.Status != out_water_OFF) ||
		child_lock_info.Status == lock_child 
	  )
	{
		GPIO_ResetBits(GPIOA, GPIO_Pin_7);
		out_water_info.Status = out_water_OFF;
	}	
}

调试方法

烧录工程, 然后触发 PA5处的按键或红外 , 我们通过修改初始化的童锁, 观看PA7处的小灯是否可以亮, 童锁加入底层, 进一步保证安全性. 后续我们联网调控童锁, 并且开关童锁的时候, 加入更多的 界面优化显示, 保证用户体验.

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

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

相关文章

《计算机操作系统》(第4版)第6章 输入输出系统 复习笔记

第6章 输入输出系统 一、I/O 系统的功能、模型和接口 1.I/O 系统的基本功能 (1)隐藏物理设备的细节。 (2)与设备的无关性。 (3)提高处理机和I/O 设备的利用率。 ( 4 ) 对I/O 设备进行控制。 (5)确保对设备的正确共享。 (6)错误处理。 2.I/O 系统的层次结构和模型 (…

21.1 Netty介绍及服务搭建

21.1 基于Netty实现聊天 一. 章节概述二. `Netty`介绍三. 阻塞与非阻塞1. 阻塞与非阻塞简介2. BIO同步阻塞3. NIO同步非阻塞4. AIO异步非阻塞IO5. 异步阻塞IO(用的极少)6. 总结四. Netty三种线程模型1. 单线程模型2. 多线程模型3. 主从线程模型五. 构建Netty服务器************…

【传输层协议】UDP协议 {端口号的范围划分;UDP数据报格式;UDP协议的特点;UDP的缓冲区;基于UDP的应用层协议}

一、再谈端口号 1.1 端口号标识网络进程 如何通过端口号找到主机上的网络进程? 在socket编程中bind绑定是最为重要的一步:他将套接字与指定的本地 IP 地址和端口号关联起来,这意味着指定的套接字可以接收来自指定 IP 地址和端口号的数据包…

跟李沐学AI:转置卷积

定义 卷积不会增大输入的高宽,通常卷积层后高宽不变或减半。转置卷积则可以用来增大输入的宽高。 转置卷积是一种卷积,它将输入和核进行了重新排列,通常用作上采用。 如果卷积将输入从变为,同样超参数的情况下,转置…

坐标大连!提交EI、Scopus、知网检索!第五届经济管理与大数据应用国际学术会议(ICEMBDA 2024)

合作ACM出版-EI稳检索 高录用,快见刊! 管理、经济、金融、计算机相关主题均可投稿 目前仍有口头汇报名额,如有需要请尽快报名 重要信息 会议官网:www.icembda.org 会议时间:2024年10月25日-27日 会议地点&#x…

20.缓存的更新策略

定义 缓存中的旧数据与数据库不一致。 缓存更新策略的类型 1.内存淘汰,利用redis的内存淘汰机制,当内存不足时自动淘汰部分数据。下次查询时更新缓存。redis默认开启了此机制。这种保证数据的一致性差。 2.超时剔除,给缓存数据添加TTL时间…

保证MQ的高可用性:RabbitMQ为例

保证MQ的高可用性:RabbitMQ为例 一、单机模式二、普通集群模式三、镜像集群模式 💖The Begin💖点点关注,收藏不迷路💖 消息队列(MQ)在软件开发中至关重要,其高可用性关乎系统稳定。R…

48、Python之模块和包:当导入模块时,Python解释器做了什么

引言 上一篇文章中,我们简单介绍了各种导入模块的方法,并通过代码演示了模块被导入之前的模块查找的路径解析过程,但是,只是局限在了加载模块之前。 今天这篇文章,打算把整个模块导入的全流程进行梳理,从…

Windows上传Linux文件行尾符转换

Windows上传Linux文件行尾符转换 1、Windows与Linux文件行尾符2、Windows与Linux文件格式转换 1、Windows与Linux文件行尾符 众所周知,Windows、Mac与Linux三种系统的文件行尾符不同,其中 Windows文件行尾符(\r\n): L…

【初阶数据结构题目】40. 计数排序

计数排序 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤: 统计相同元素出现次数 根据统计的结果将序列回收到原来的序列中 思路: 例如:{6,1,2,9,4,…

书生模型实战L1---OpenCompass 评测

书生模型实战系列文章目录 第一章 入门岛L0(Linux) 第二章 入门岛L0(python) 第三章 入门岛L0(Git) 第四章 基础岛L1(书生全链路开源介绍) 第五章 基础岛L1(Demo&#x…

【计算机三级-数据库技术】操作题大题(第六套)

第六套操作题 第46题 假定要建立一个学校科研项目管理的信息系统,需要管理如下信息: 教师:教师编号、教师姓名; 项目:项目编号、项目名称、资助额: 学生:学生编号、学生姓名、学位&#xff0c…

Spring底层机制环境搭建

文章目录 1.模块创建和依赖引入1.聚合模块,下面有一个myspring2.查看父模块是否管理了子模块3.myspring模块引入基本包 2.进行环境搭建1.目录概览2.UserController.java3.UserService.java4.UserDao.java5.AppMain.java6.beans.xml7.测试8.配置UserController.java为…

教程3_单元层次结构1

单元层次结构是指通过将多个单元嵌套使用,形成具有层次结构的设计。每个单元可以包含其他单元的实例,这些实例称为“子单元”,而包含这些子单元的单元称为“父单元”。这种结构使得复杂设计变得模块化和可复用。 1、创建并使用单元实例 创建…

解读电子看板如何助力线缆行业目视化改革

线缆行业作为国民经济的重要组成部分,其生产过程复杂,环节众多,对生产效率和质量控制有着严格的要求。传统的管理方式往往难以满足现代化生产的需求,而电子看板的引入,为线缆行业带来了全新的管理理念和模式&#xff0…

23.合并K个升序链表-----力扣

一、题目: 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 题目链接 二、示例: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释…

​元宇宙虚拟展厅如何搭建?制作​线上虚拟展厅的成本

电子商务热潮的日益普及,让更多企业开始寻找具有创新性的方式来向客户展示他们的产品和服务。而元宇宙中的虚拟展厅也为企业提供了一个独特的机会,作为帮助企业展示其产品和服务特色的平台,元宇宙越发地受欢迎。不过在元宇宙中制作虚拟展厅的…

自带灭火电池?深蓝SL03托底事故揭秘

近日,网络上的一段热传视频,让不少网友看得先是惊心动魄,然后却又啧啧称奇。 该视频显示,8月18日晚上19点28分,一辆深蓝SL03在行驶中意外遭遇严重托底事故,车辆瞬间腾空跳跃,紧接着底盘出现明火…

【状态模式】设计模式系列:理解与实践(详细解读)

文章目录 状态模式详解:理解与实践1. 引言2. 状态模式简介2.1 定义2.2 应用场景2.3 与其他模式的关系 3. 状态模式的基本概念3.1 上下文(Context)类的角色3.2 状态(State)接口/抽象类3.3 具体状态(Concrete State)类3.4 UML类图和时序图 4. 状态模式的工作原理4.1 如…

用Python解决预测问题_多元线性回归模板

多元线性回归是一种统计学方法,用于分析两个或多个自变量(解释变量)与一个因变量(响应变量)之间的关系。在最简单的线性回归模型中,只有一个自变量和一个因变量,它们之间的关系可以用一条直线来…