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

2024-04-23 09:36

本文主要是介绍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);}
}

这篇关于STM32自动光控窗帘程序+Proteus仿真图 H桥L298驱动电机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/928424

相关文章

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录