STM32自动光控窗帘程序+Proteus仿真图 H桥L298驱动电机

目录

1、前言

2、仿真图

3、源程序 

资料下载地址:STM32自动光控窗帘程序+Proteus仿真图 H桥L298驱动电机

1、前言

基于STM32F103设计的智能光控窗帘,包含STM32芯片、光敏电阻、LCD1602显示屏、电机驱动控制模块等。
备注:通过ARM内部的ADC采集光敏电阻电压,判断电压值

光强检测模块:光敏电阻,对光照强度不同,阻值不同。并通过ARM内部的ADC采集光敏电阻电压,判断电压值。电压值低于设定的值,表示光强太弱,打开窗帘;电压大于设定的参考电压值,表示光强太强,关闭窗帘;光强合适,显示OK,电机不转,表示窗帘不动。
液晶显示模块:液晶显示High,表示光强太强;液晶显示OK,表示光强合适;液晶显示Low,表示光强太弱LCD1602显示光强度。
资料内部包含STM32程序和Proteus仿真。

2、仿真图

液晶显示High,表示光强太强
液晶显示OK,表示光强合适
液晶显示Low,表示光强太弱

L298  H桥,电机驱动芯片
光强太弱,表示光线不好,应该开窗
光强太强,表示光线强,关窗
光敏电阻,对光照强度不同,阻值不同
电压是模拟量,所以使用AD采集,AD值模拟量转数字量,这样ARM就可以知道当前电压值

3、源程序 

#include "stm32f10x.h"
#include "bsp-lcd1602.h"
#include "delay.h"
#include "sys.h"
#include "adc.h"void L298_GPIO( void )
{GPIO_InitTypeDef GPIO_InitStructure;         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);        
}void OPEN(void)        //left moto is runing, but right moto is brake
{GPIO_SetBits(GPIOC,GPIO_Pin_5);GPIO_ResetBits(GPIOC,GPIO_Pin_4);GPIO_ResetBits(GPIOC,GPIO_Pin_3);GPIO_ResetBits(GPIOC,GPIO_Pin_2);GPIO_SetBits(GPIOC,GPIO_Pin_1);        GPIO_SetBits(GPIOC,GPIO_Pin_0);
}
void CLOSE(void)        //right moto is runing, but left moto is brake
{GPIO_ResetBits(GPIOC,GPIO_Pin_5);GPIO_ResetBits(GPIOC,GPIO_Pin_4);GPIO_SetBits(GPIOC,GPIO_Pin_3);GPIO_ResetBits(GPIOC,GPIO_Pin_2);GPIO_SetBits(GPIOC,GPIO_Pin_1);        GPIO_SetBits(GPIOC,GPIO_Pin_0);
}void STOP(void)        //right moto is runing, but left moto is brake
{GPIO_SetBits(GPIOC,GPIO_Pin_5);GPIO_SetBits(GPIOC,GPIO_Pin_4);GPIO_SetBits(GPIOC,GPIO_Pin_3);GPIO_SetBits(GPIOC,GPIO_Pin_2);GPIO_SetBits(GPIOC,GPIO_Pin_1);        GPIO_SetBits(GPIOC,GPIO_Pin_0);
}int main(void)
{
int a,b,c,d;float temp;delay_init();                     //延时函数初始化                  LCD1602_Init();ADC1_GPIO_Config();L298_GPIO();ADC_Config();  LCD1602_ShowStr(0,0,"  Auto curtain ",15);LCD1602_ShowStr(0,1,"Light:",6);while(1){b=ADC_GetConversionValue(ADC1);temp=b*(3.4/4096)*10;//表示光线太弱if( temp < 8 ){LCD1602_ShowStr(7,1,"open ",4);OPEN();}else{if( temp < 25)                                //光线合适{LCD1602_ShowStr(7,1,"OK  ",4);STOP();}else                                                //光线太强 {LCD1602_ShowStr(7,1,"close",4);CLOSE();}}
//                a=temp/1;
//                c=temp*10;
//                d=c%10;
//                LCD_ShowNum(11,0,a);
//                LCD_ShowNum(13,0,d);}
}

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

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

相关文章

管理 Python 项目的艺术:在 PyCharm 中使用虚拟环境(以BPnP为例)

在 PyCharm 中使用虚拟环境对于 Python 项目开发具有多方面的重要作用&#xff0c;这些作用体现在提升项目管理的效率、保障代码的可运行性以及维护项目的长期稳定性等方面。以下是使用虚拟环境的几个关键好处&#xff1a; 1. 依赖管理和隔离 虚拟环境允许每个项目拥有…

Hadoop3:大数据生态体系

一、技术层面 通过下面这张图&#xff0c;我们可以大概确定&#xff0c;在大数据行业里&#xff0c;自己的学习路线。 个人认为&#xff0c;Hadoop集群一旦搭建完工&#xff0c;基本就是个把人运维的事情 主要岗位应该是集中在数据计算层&#xff0c;尤其是实时计算&#xff…

单调栈(C/C++)

引言&#xff1a; 单调队列和单调栈都是一种数据结构&#xff0c;应用十分广泛&#xff0c;在蓝桥杯、ICPC、CCPC等著名编程赛事都是重点的算法&#xff0c;今天博主将自己对单调栈与单调队列的理解以及刷题的经验&#xff0c;用一篇博客分享给大家&#xff0c;希望对大家有所…

【UI】element-ui的el-dialog的遮罩层在模态框的前面bug

最近在写element ui 的时候使用dialog组件&#xff0c;偶然出现了这种情况 原因&#xff1a; 是因为遮罩层插入进了body标签下&#xff0c;z-index高于当前父元素。 解决&#xff1a;在el-dialog标签里加上:modal-append-to-body"false"就可以了。 饿了么官网文档&a…

Ardupilot OpenIPC 基于WFB-NG构架分析和数据链路思考

Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考 1. 源由2. OpenIPC安装2.1 安装2.2 配置2.2.1 天空端配置文件2.2.2 地面端配置文件 2.3 当前配置选择 3. WFB-NG安装3.1 RTL8812AU安装3.1.1 驱动安装3.1.2 定位设备 3.2 wfb-ng安装3.2.1 传输层安装3.2.2 配置…

照片相似性搜索引擎Embed-Photos;赋予大型语言模型(LLMs)视频和音频理解能力;OOTDiffusion的基础上可控制的服装驱动图像合成

✨ 1: Magic Clothing Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目&#xff0c;建立在OOTDiffusion的基础上 Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目&#xff0c;建立在OOTDiffusion的基础上。通过使用Magic Clothing&#xf…

Jenkins CI/CD 持续集成专题二 Jenkins 相关问题汇总

一 问题一 pod [!] Unknown command: package 1.1 如果没有安装过cocoapods-packager&#xff0c;安装cocoapods-packager&#xff0c;sudo gem install cocoapods-packager 1.2 如果已经安装cocoapods-packager&#xff0c;还是出现上面的错误&#xff0c;有可能是pod的安…

防、治、管融合一体化旅居健康守护系统

随着人口老龄化趋势的加剧和人们生活水平的提高&#xff0c;养老服务需求不断增长。旅居养老作为一种新型的养老模式&#xff0c;逐渐受到广大老年人的青睐。在生命健康服务运营平台中&#xff0c;为了给老人提供全方位、个性化的生命健康服务&#xff0c;我们平台也特意开设了…

31 信号量

概念 共享内存在通信的过程中&#xff0c;没有任何保护机制。当A进程写入了一部分&#xff0c;就被B、拿走了&#xff0c;导致双方发和收的数据不完整&#xff0c;数据不一致问题 1.A和B看到同一份资源&#xff0c;共享资源&#xff0c;如果不加保护&#xff0c;会导致数据不…

PyCharm添加外部工具

QtDesigner 可视化UI设计客户端工具 路径&#xff1a;File | Settings | Tools | External Tools点号&#xff0c;给External Tools组添加一个条目&#xff0c;填写如下内容 Name&#xff1a;QtDesignerProgram&#xff1a;C:\Users\用户名\AppData\Local\Programs\Python\Py…

在誉天学习云计算HCIE,担心考试考不过?

誉天定制化课程内容覆盖了所有考试重点&#xff0c;可以系统地掌握理论与实践知识。 对于笔试&#xff0c;类似于备考驾照理论学习阶段&#xff0c;誉天为大家提供在线模拟测试系统&#xff0c;帮助大家掌握云计算笔试考点。笔试通过后&#xff0c;18个月内&#xff08;一年半…

Docker 哲学 - docker save | load | export | import 及实践

当我们说 "归档文件包含了容器的所有文件&#xff0c;但不包含容器的元数据和配置"&#xff0c;我们是指 docker export 命令导出的 tar 归档文件包含了容器的文件系统中的所有文件&#xff0c;包括应用程序、库、数据等。但是&#xff0c;这个归档文件不包含关于容器…

Python 网络与并发编程(一)

文章目录 并发编程介绍串行、并行与并发的区别进程、线程、协程的区别进程线程协程 并发编程解决方案同步和异步介绍 并发编程介绍 串行、并行与并发的区别 有任务A、B、C&#xff0c;一个CPU去执行他们&#xff0c;有几种方式 1、一个cpu按顺序执行ABC&#xff0c;这就是串行…

go语言并发实战——日志收集系统(六) 编写日志收集系统客户端

上节回顾 在上一篇文章中我们介绍了编写客户端的四个步骤&#xff0c;分别是&#xff1a; 读取配置文件&#xff0c;寻找日志路径初始化服务根据日志路径l来收集日志将收集到的日志发送Kafka中 关于上述的内容博主画了一个思维导图(有点丑&#xff0c;大家勉强看看&#xff0…

燃冬之yum、vim和你

了解了很多指令和权限&#xff0c;搞点真枪实弹来瞅瞅 学Linux不是天天就在那掰扯指令玩&#xff0c;也不是就研究那个权限 准备好迎接Linux相关工具的使用了么码农桑~ yum 软件包 什么是软件包呢&#xff1f; 首先来举个生活中常见点的例子&#xff1a;比如我的手机是华为…

Tensor张量的属性dim、type、size、shape、numel的使用方法介绍

本文重点 Tensor张量有一些常用的属性&#xff0c;我们可以通过这些基本的属性判断张量的类型&#xff0c;维度&#xff0c;以及元素个数&#xff0c;本节课程我们将对tensor属性进行简单的介绍。 代码 import torch import numpy as np atorch.Tensor(2,3,4) print(a) prin…

【论文笔记 | 异步联邦】 FedBuff

1. 论文信息 Federated Learning with Buffered Asynchronous Aggregation&#xff0c;International Conference on Artificial Intelligence and Statistics&#xff0c;2022&#xff0c;ccfc 2. introduction 2.1.1. 背景&#xff1a; 同步 FL &#xff0c;随训练过程中…

AI视频分析技术的常用开源模型及TSINGSEE青犀AI视频识别分析能力介绍

AI视频分析技术是指利用人工智能技术来对视频数据进行分析和处理的技术。开源模型是指可以免费获取和使用的代码模型&#xff0c;可以帮助开发人员快速构建和部署AI视频分析应用程序。 以下是一些业内常用的用于AI视频分析技术的开源模型&#xff1a; OpenCV&#xff1a;Open…

给字符串添加加粗标签(AC自动机+Python)

可以暴力解决&#xff0c;但是为了锻炼一下ac自动机的编程&#xff0c;我们使用ac自动机。 ac自动机主要维护两个列表&#xff0c;一个列表ch&#xff0c;ch[f][idx]表示从父节点f向idx这个方向走&#xff0c;走到的节点。另一个列表nex&#xff0c;nex[i]表示节点i回跳边的节…

01 【哈工大_操作系统】x86_64 常用寄存器大全

在学习CPU底层技术的时候&#xff0c;难免会接触到各式各样的寄存器。尤其是在使用汇编语言编写操作系统时&#xff0c;寄存器更是必不可少的。因此&#xff0c;这篇文章将来详细聊聊 x86_64 架构中的所有寄存器&#xff0c;按照从 常用->不常用 的顺序来进行介绍。 首先&a…