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);
        }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32应用开发教程进阶--UART串口重定向(printf)

实现目标 1、掌握STM32 HAL库的串口重定向 2、具体目标&#xff1a;1、实现printf “打印”各种常用的类型的数据变量 一、串口“打印” UART串口通信协议是我们常用的通信协议&#xff08;UART、I2C、SPI等&#xff09;之一&#xff0c;全称叫做通用异步收发传输器&#xf…

一例MFC文件夹病毒的分析

概述 这是一个MFC写的文件夹病毒&#xff0c;通过感染USB设备传播&#xff0c;感染后&#xff0c;会向c2(fecure.info:443)请求指令来执行。 样本的基本信息 Verified: Unsigned Link date: 19:52 2007/7/5 MachineType: 32-bit MD5: 4B463901E5858ADA9FED28FC5…

idea显示maven或者gradle无法从仓库获取到项目中的jar包,jar包所在仓库无法访问解决方法,百试百灵

**idea显示maven或者gradle无法从仓库获取到项目中的jar包&#xff0c;jar包所在仓库无法访问解决方法&#xff0c;百试百灵** 直接上图&#xff0c;大概的故障问题就是&#xff1a;idea导入新的项目&#xff0c;因为项目中很多的jar需要从远程仓库下载&#xff0c;但是远程仓库…

【CSS】使用 scroll snap 实现页面的垂直大屏滚动

CSS 属性 scroll-snap-type 设置了在有滚动容器的情形下吸附至吸附点的严格程度。 scroll-snap-type 使用 scroll snap 也可以用于垂直滚动&#xff0c;全屏展示就是一个很好的例子: <main><section class"section section-1"></section><sect…

Golang | Leetcode Golang题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; func isMatch(s string, p string) bool {for len(s) > 0 && len(p) > 0 && p[len(p)-1] ! * {if charMatch(s[len(s)-1], p[len(p)-1]) {s s[:len(s)-1]p p[:len(p)-1]} else {return false}}if len(p) 0 {retur…

学生选课及成绩查询管理系统的设计与开发C#(winform + sqlserver)

源码来自网络 技术栈&#xff1a; C#的窗体程序开发 本系统未采用C#实现MDI——多文档窗口&#xff0c;因为考虑到C#的该技术与java类似&#xff0c;而暑期java实训时&#xff0c;曾用过类似的方法做过停车场管理系统&#xff0c;所以想为这次的系统注入一点新鲜的血液&#x…

golang学习笔记(net/http库基本使用)

关于net/http库 我们先看看标准库net/http如何处理一个请求。 import ("fmt""log""net/http" )var count 0func main() {http.HandleFunc("/", handler)http.HandleFunc("/count", counter)log.Fatal(http.ListenAndServ…

支持中文繁体,支持同时配置并启用飞书和Lark认证,JumpServer堡垒机v3.10.8 LTS版本发布

2024年4月22日&#xff0c;JumpServer开源堡垒机正式发布v3.10.8 LTS版本。JumpServer开源项目组将对v3.10 LTS版本提供长期的支持和优化&#xff0c;并定期迭代发布小版本。欢迎广大社区用户升级至v3.10 LTS最新版本&#xff0c;以获得更佳的使用体验。 在v3.10.8 LTS版本中&…

Hadoop3:大数据生态体系

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

云原生环境该怎样解决网络安全问题

随着云计算逐渐迈向成熟阶段&#xff0c;云原生技术以其“生在云上、长在云上”的核心理念&#xff0c;被普遍认为是云计算未来十年发展的关键方向。该技术不仅能够有效破解传统云实践中所面临的应用升级缓慢、架构臃肿、迭代效率低下等难题&#xff0c;更为业务创新注入了强大…

R可视化:桑基图展示数据层流动

介绍 以桑基图形式展示数据分布情况 加载R包 knitr::opts_chunk$set(message = FALSE, warning = FALSE) library(tidyverse) library(ggalluvial)# rm(list = ls()) options(stringsAsFactors = F) options(future.globals.maxSize = 10000 * 1024^2) 导入数据 metadata…

Jenkins CI/CD 持续集成专题三 Jenkins 使用shell脚本打包组件配置流程

第一步 新建任务 第二步 输入项目名称和选择自由风格的软件项目点击确定 第三步 配置下项目地址和账号密码 第四步 配置 build steps 选择 shell 脚本 第五步 shell 配置 &#xff08;注意shell 必须以#!/bin/sh开头&#xff0c;否则会报 找不到shell 命令的错&#xff09; …

node.js如何实现留言板功能?

一、实现效果如下&#xff1a; 20240422_160404 二、前提配置&#xff1a; 配置&#xff1a;需要安装并且导入underscore模板引擎 安装&#xff1a;在控制台输入npm install underscore -save 文件目录配置&#xff1a; 1》在文件里建一个data文件夹&#xff0c;此文件夹下…

搜维尔科技:为什么您应该选择 Movella Xsens 动作捕捉

Xsens 动作捕捉 – 黄金标准 从电影制作人到物理治疗师&#xff0c;Xsens 动作捕捉系统正在帮助世界各地的专业人士将动作数字化。要么获得洞察力以改善健康或表现&#xff0c;要么创建角色和视觉特效&#xff0c;将内容制作者的愿景变为现实。 为什么您应该选择Xsens 动作捕捉…

Android Studio开发工具学习之Git远程仓库拉取与推送

Git远程仓库操作 1.1 推送项目到远端服务器1.1.1 进入Gitee或Github、创建一个新的仓库1.1.2 将Android Studio中项目推送至Gitee 1.2 从远端服务器拉取项目1.2.1 AS工程页拉取新项目1.2.2 AS启动页拉取项目 1.1 推送项目到远端服务器 1.1.1 进入Gitee或Github、创建一个新的仓…

自定义表单系统开源是否好用?

在竞争激烈的社会中&#xff0c;拥有够灵活、易维护、可视化界面等优势特点的低代码技术平台获得了很多中小型企业的认可与信赖。在提升企业竞争力、办公效率和规避信息孤岛等方面具有重要的应用价值和作用。流程信息为客户提供低代码技术平台、自定义表单系统开源&#xff0c;…

STM32浮点型变量数值大小边界判断有误的问题的原因及解决方案

1. 问题描述 在使用STM32G431RBT6芯片的开发板的时候&#xff0c;要实现如下图所示的一个按键控制一个浮点型变量的累加与到达边界值清零的功能。 只关于这一部分功能的代码段如下 float x 0; // 浮点型变量初始化 /* 中间的其它代码与该问题无关&#xff0c;这里省略&am…

YOLOv8蒸馏 | 知识蒸馏 | 利用模型蒸馏改进YOLOv8进行无损涨点 | MimicLoss(在线蒸馏 + 离线蒸馏)

一、本文介绍 这篇文章给大家带来的是模型的蒸馏&#xff0c;利用教师模型指导学生模型从而进行模型的涨点&#xff0c;本文的内容不仅可以用于论文中&#xff0c;在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术&#xff0c;所以大家可以仔细学习一下本文的内容&#…

redis 未授权访问漏洞详解

1、漏洞原理&#xff1a; 1、redis 绑定在6379端口&#xff0c;且没有进行添加防火墙规则避免其他非信任来源ip访问等相关安全策略&#xff0c;直接暴露在公网。 2、没有设置密码认证&#xff08;默认密码为空&#xff09;&#xff0c;可以免密码远程登录redis服务。 2、漏洞…

项目大集成

一 keeplived 高可用 192.168.11.11nginx keeplived192.168.11.12nginx keeplived 两台均编译安装服务器 1 主服务器修改文件&#xff1a; 2 备服务器修改文本 scp keepalived.conf 192.168.11.12:/etc/keepalived/ 3 给主服务器添加虚拟ip ifconfig ens33:0 192.168…