当前位置: 首页 > article >正文

基于STM32的学习环境控制系统设计

🤞🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是学习环境控制

设备的详细功能见网盘中的文章《21、基于STM32的学习环境控制系统设计》:

链接:https://pan.baidu.com/s/1uWSZX2zbZwy9sYwwnvyktQ?pwd=5132

提取码:5132

 目录

1、系统功能

2、演示视频和实物

3、系统设计框图

4、软件设计流程图

5、原理图

6、主程序

7、总结


1、系统功能

本次的项目是智能学习环境自动调节系统。
1、元器件采用了STM32F103C8T6作为主控,
2、光敏电阻用来检测环境的光照强度,声音传感器模块用来检测环境的噪声。
3、LED灯用来模拟台灯,通过PWM控制实现亮度的调节。
4、超声波传感器用来检测坐姿。
5、语音识别模块用来识别用户的指令,实现语音控制。
6、hc-05蓝牙模块实现在家远程控制。
7、按键模块实现模式控制和亮度调节。
8、蜂鸣器报警模块,当环境噪声大于设定阈值蜂鸣器报警。
9、OLED液晶显示屏用来显示传感器数据。
控制模式有:手动控制,语音控制,蓝牙控制,自动控制。

2、演示视频和实物

基于STM32的智能学习环境设计(版本1)

3、系统设计框图

4、软件设计流程图

5、原理图

6、主程序

#include "sys.h"    //有定制和购买的,可以联系VX:lwfw123456789
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
/***********************************************************************************************
同学好!我们是5132单片机设计,定制单片机设计,实物和说明书均可定制,欢迎大家咨询。VX:lwfw123456789
其他项目演示视频和说明请大家移步哔哩哔哩、CSDN和公众号等。
哔哩哔哩:5132单片机设计
CSDN:    5132单片机设计
公众号:  5132单片机设计
抖音  :  5132单片机设计
小红书:  5132单片机设计
咸鱼:    5132单片机设计
************************************************************************************************/
u8 hour_h, min_m, sec_s, msec_ms; //秒表---时、分、秒、毫秒
u8 state, state2, state2_1, state3, state4;       //按键状态标志
u8 t = 0;                                     //传感器读取时间间隔
u8 flag;                               //远程控制标志
u8 flag2 = 0, flag1, flag3;
uint16_t RTC_Time[] = {0, 0, 0};
uint16_t RTC_Time1[] = {7, 0, 0};    //定时时间---开
uint16_t RTC_Time2[] = {19, 0, 0};   //定时时间---关
u8 T_state, T_state1, qingping = 1, state_dingshi_yu_guan, state_dingshi_yu_kai, state_dingshi_yu_switch, state3_1;
uint32_t GuangYu1 = 10,GuangYu2 = 30,GuangYu3 = 50,GuangYu4 = 70;  
extern void TimeSet(void);
extern void TimeRead(void);
extern void DingShiMoShi(void);
extern void YuYin(void);
extern void ChuangGan(void);
extern void msec_time(void);
extern void msec_Calcu(void);void MY_Gizwits_Init(void)              //机智云初始化函数
{TIM3_Int_Init(9, 7199); //1MS系统定时usart3_init(9600);//WIFI初始化memset((uint8_t *)&currentDataPoint, 0, sizeof(dataPoint_t)); //设备状态结构体初始化gizwitsInit();//环形缓冲区初始化gizwitsSetMode(2);   //设置模式userInit();
}void shoudong()
{TimeRead();if (KeyNum == 2)        //按键PB0控制窗户开关{delay_ms(20);if (KeyNum == 2){state2++;if (state2 > 5){state2 = 0;}}}switch (state2){case 0:PWM_SetCompare1(0);break;case 1:PWM_SetCompare1(10);break;case 2:PWM_SetCompare1(30);break;case 3:PWM_SetCompare1(50);break;case 4:PWM_SetCompare1(70);break;default:break;}
}
void zhidong()
{switch (state4){case 1:PWM_SetCompare1(0);break;case 2:PWM_SetCompare1(33);break;case 3:PWM_SetCompare1(66);break;case 4:break;      default:break;}  
}int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(9600);       //串口初始化为9600delay_init();      //延时函数初始化Buzzer_Init();             //下面为外设初始化OLED_Init();Key_Init();AD_Init();MyRTC_Init();PWM_Init();MY_Gizwits_Init();   //机智云初始化Serial2_Init();   //串口2初始化(语音识别模块)TIM4_Int_Init(99, 7199);while (1){userHandle();    //数据上传gizwitsHandle((dataPoint_t *)&currentDataPoint);   //后台处理,必须放在while里if (t % 10 == 0){AD0 = AD_GetValue(ADC_Channel_1);    //光照传感器     PA0if (AD0 > 4000)AD0 = 4000;bufe[0] = (u8)(100 - (AD0 / 40));if(bufe[0]<GuangYu1)  state4=4;	else if(bufe[0]<GuangYu2)  state4=3;else if(bufe[0]<GuangYu3)  state4=2;	else if(bufe[0]<GuangYu4)  state4=1;}t++;KeyNum = Key_GetNum();if (KeyNum == 1){qingping = 0;state2 = 0,delay_ms(20);if (KeyNum == 1){state++;if (state > 3){state = 0;}}}if (state == 0)                                //远程模式{if (qingping == 0){OLED_Clear();qingping = 1;}TimeRead();ChuangGan();OLED_ShowChinese(1, 7, 49);OLED_ShowChinese(1, 8, 50);}if (state == 2)                           //自动模式{OLED_ShowChinese(1, 7, 51);OLED_ShowChinese(1, 8, 52);TimeRead();zhidong();ChuangGan();msec_time();}if (state == 1)                           //手动模式{OLED_ShowChinese(1, 7, 18);OLED_ShowChinese(1, 8, 52);ChuangGan();shoudong();}if (state == 3)                           //语音模式{if (qingping == 0){OLED_Clear();qingping = 1;}OLED_ShowChinese(1, 7, 57);OLED_ShowChinese(1, 8, 58);TimeRead();ChuangGan();YuYin();}}
}void TimeSet()           //设置时间
{if (KeyNum == 2)    //PB10{delay_ms(20);if (KeyNum == 2){T_state++;if (T_state > 2){T_state = 0;}}}if (T_state == 0)    //时间显示模式{MyRTC_ReadTime();OLED_ShowNum(1, 5, MyRTC_Time[3], 2);    //时OLED_ShowString(1, 7, ":");OLED_ShowNum(1, 8, MyRTC_Time[4], 2);    //分OLED_ShowString(1, 10, ":");OLED_ShowNum(1, 11, MyRTC_Time[5], 2);   //秒RTC_Time[0] = MyRTC_Time[3];RTC_Time[1] = MyRTC_Time[4];RTC_Time[2] = MyRTC_Time[5];}if (T_state == 1)    //修改时间{if (KeyNum == 5){delay_ms(20);if (KeyNum == 5){T_state1++;if (T_state1 > 2){T_state1 = 0;}}}if (T_state1 == 0)  //修改时{if (KeyNum == 4)RTC_Time[0]++;if (KeyNum == 3)RTC_Time[0]--;if (RTC_Time[0] > 23 & RTC_Time[0] < 100)RTC_Time[0] = 0;if (RTC_Time[0] > 100)RTC_Time[0] = 23;OLED_ShowNum(1, 5, RTC_Time[0], 2);  //时}if (T_state1 == 1)  //修改分{if (KeyNum == 4)RTC_Time[1]++;if (KeyNum == 3)RTC_Time[1]--;if (RTC_Time[1] > 59 & RTC_Time[1] < 100)RTC_Time[1] = 0;if (RTC_Time[1] > 100)RTC_Time[1] = 59;OLED_ShowNum(1, 8, RTC_Time[1], 2);  //时}if (T_state1 == 2)  //修改秒{if (KeyNum == 4)RTC_Time[2]++;if (KeyNum == 3)RTC_Time[2]--;if (RTC_Time[2] > 59)RTC_Time[2] = 0;if (RTC_Time[2] > 59 & RTC_Time[2] < 100)RTC_Time[2] = 0;if (RTC_Time[2] > 100)RTC_Time[2] = 59;OLED_ShowNum(1, 11, RTC_Time[2], 2);  //时}}if (T_state == 2){MyRTC_Time[3] = RTC_Time[0];MyRTC_Time[4] = RTC_Time[1];MyRTC_Time[5] = RTC_Time[2];MyRTC_SetTime();T_state = 0;}
}void TimeRead()
{MyRTC_ReadTime();OLED_ShowNum(1, 5, MyRTC_Time[3], 2);    //时OLED_ShowString(1, 7, ":");OLED_ShowNum(1, 8, MyRTC_Time[4], 2);    //分OLED_ShowString(1, 10, ":");OLED_ShowNum(1, 11, MyRTC_Time[5], 2);   //秒
}void DingShiMoShi()
{TimeRead();//...............................定时模式..................................../if ((MyRTC_Time[3] == RTC_Time1[0]) && (MyRTC_Time[4] == RTC_Time1[1]) && (MyRTC_Time[5] == RTC_Time1[2])){//外设操作}if ((MyRTC_Time[3] == RTC_Time2[0]) && (MyRTC_Time[4] == RTC_Time2[1]) && (MyRTC_Time[5] == RTC_Time2[2])){//外设操作}//...............................修改定时时间..................................../OLED_ShowChinese(3, 1, 31);OLED_ShowString(3, 3, ":");OLED_ShowNum(3, 5, RTC_Time1[0], 2);OLED_ShowString(3, 7, ":");OLED_ShowNum(3, 8, RTC_Time1[1], 2);OLED_ShowString(3, 10, ":");OLED_ShowNum(3, 11, RTC_Time1[2], 2);OLED_ShowChinese(4, 1, 32);OLED_ShowString(4, 3, ":");OLED_ShowNum(4, 5, RTC_Time2[0], 2);OLED_ShowString(4, 7, ":");OLED_ShowNum(4, 8, RTC_Time2[1], 2);OLED_ShowString(4, 10, ":");OLED_ShowNum(4, 11, RTC_Time2[2], 2);if (KeyNum == 5){delay_ms(20);if (KeyNum == 5){state_dingshi_yu_switch++;if (state_dingshi_yu_switch > 2){state_dingshi_yu_switch = 0;}}}if (state_dingshi_yu_switch == 1)    //设置阈值开的时间{if (KeyNum == 2){delay_ms(20);if (KeyNum == 2){state_dingshi_yu_kai++;if (state_dingshi_yu_kai > 2){state_dingshi_yu_kai = 0;}}}if (state_dingshi_yu_kai == 0)    //时{if (KeyNum == 3) RTC_Time2[0]++;if (KeyNum == 4) RTC_Time2[0]--;}if (state_dingshi_yu_kai == 1)//分{if (KeyNum == 3) RTC_Time2[1]++;if (KeyNum == 4) RTC_Time2[1]--;}if (state_dingshi_yu_kai == 2)//秒{if (KeyNum == 3) RTC_Time2[2]++;if (KeyNum == 4) RTC_Time2[2]--;}}else{if (KeyNum == 2){delay_ms(20);if (KeyNum == 2){state_dingshi_yu_guan++;if (state_dingshi_yu_guan > 2){state_dingshi_yu_guan = 0;}}}if (state_dingshi_yu_guan == 0)    //时{if (KeyNum == 3) RTC_Time1[0]++;if (KeyNum == 4) RTC_Time1[0]--;}if (state_dingshi_yu_guan == 1)//分{if (KeyNum == 3) RTC_Time1[1]++;if (KeyNum == 4) RTC_Time1[1]--;}if (state_dingshi_yu_guan == 2)//秒{if (KeyNum == 3) RTC_Time1[2]++;if (KeyNum == 4) RTC_Time1[2]--;}}if (state3_1 == 0)    //时{if (KeyNum == 5) RTC_Time1[0]++;if (KeyNum == 6) RTC_Time1[0]--;}if (state3_1 == 1)//分{if (KeyNum == 5) RTC_Time1[1]++;if (KeyNum == 6) RTC_Time1[1]--;}if (state3_1 == 2)//秒{if (KeyNum == 5) RTC_Time1[2]++;if (KeyNum == 6) RTC_Time1[2]--;}
}void YuYin()
{if (Serial2_RxFlag == 1)        //串口接收到数据包的标志位,若是收到数据包,会置1{if (strcmp(Serial2_RxPacket, "LED_ON") == 0){PWM_SetCompare1(66);;}else if (strcmp(Serial2_RxPacket, "LED_OFF") == 0){PWM_SetCompare1(0);;}Serial2_RxFlag = 0; //将标志位清零,不清零就接收不到下一个数据包了}
}void ChuangGan()
{char time_ms[8] = {0};  //时间缓冲区sprintf(time_ms, "%02d:%02d:%02d:%02d", hour_h, min_m, sec_s, msec_ms);OLED_ShowString(4, 3, time_ms); //oled显示时间delay_ms(10);OLED_ShowChinese(2, 1, 53);OLED_ShowChinese(2, 2, 54);OLED_ShowString(2, 5, ":");OLED_ShowNum(2, 6, bufe[0], 2);OLED_ShowString(2, 8, "%");OLED_ShowString(3, 1, "LED_DU:");OLED_ShowNum(3, 8, state2, 1);
}void msec_time(void)
{switch (KeyNum){case 2:TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE); //关闭更新中断TIM_Cmd(TIM4, DISABLE); //关闭时钟break;case 3:TIM_ITConfig(TIM4, TIM_IT_Update, DISABLE); //关闭更新中断TIM_Cmd(TIM4, DISABLE); //关闭时钟hour_h = 0;min_m = 0;sec_s = 0;msec_ms = 0;break;case 4:TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); //使能时钟,允许更新中断TIM_Cmd(TIM4, ENABLE); //使能时钟break;default:break;}
}void msec_Calcu(void)
{msec_ms++;if (msec_ms == 100){msec_ms = 0;sec_s++;if (sec_s == 60){sec_s = 0;min_m++;if (min_m == 60){min_m = 0;hour_h++;if (hour_h == 60){OLED_Clear(); //OLED清屏OLED_ShowString(2, 2, "overflow");}}}}
}

7、总结

该系统以主控芯片为核心,集环境监测、模式控制与外设驱动于一体。通过光照等传感器采集数据,支持远程、手动、自动、语音四种模式。可切换模式控制 LED 亮度,具备秒表功能,利用 WIFI 与机智云交互,语音模块可实现语音控制。

相关文章:

基于STM32的学习环境控制系统设计

&#x1f91e;&#x1f91e;大家好&#xff0c;这里是5132单片机毕设设计项目分享&#xff0c;今天给大家分享的是学习环境控制。 设备的详细功能见网盘中的文章《21、基于STM32的学习环境控制系统设计》&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1uWSZX2zbZwy9sY…...

snort3.0-ubuntu18.04 64入侵检测安装与使用ailx10ailx10​​知乎知识会员

在日常生活中&#xff0c;很多人怀疑自己的手机、电脑被监控了&#xff0c;担心自己的隐私泄漏&#xff0c;实际上最佳的检测方式就是终端检测&#xff0c;也就是EDR&#xff0c;但是就是有那么多的人在网上大放厥词&#xff0c;说任何EDR杀毒软件都检测不到监控&#xff0c;毕…...

使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器进行模型检查点处理

2023 年 11 月&#xff0c;Amazon 宣布推出适用于 PyTorch 的 S3 连接器。适用于 PyTorch 的 Amazon S3 连接器提供了专为 S3 对象存储构建的 PyTorch 数据集基元&#xff08;数据集和数据加载器&#xff09;的实现。它支持用于随机数据访问模式的地图样式数据集和用于流式处理…...

408-数据结构

数据结构在学什么&#xff1f; 1.用代码把问题信息化 2.用计算机处理信息 ch1 数据&#xff1a;数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 ch2 //假设线性表…...

spring cloud 使用 webSocket

1.引入依赖,(在微服务模块中) <!-- Spring WebSocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency> 2.新建文件 package com.ruoyi.founda…...

安科瑞 Acrel-2000ES:解锁储能管理新高度,引领能源未来!

安科瑞 崔丽洁 在能源转型的关键时期&#xff0c;高效的储能管理成为众多企业和项目的核心需求。今天&#xff0c;就给大家介绍一款储能管理的 “神器”—— 安科瑞 Acrel-2000ES 储能能量管理系统。 安科瑞电气可是行业内的 “明星企业”&#xff0c;2003 年成立&#xff0c;2…...

基于Django以及vue的电子商城系统设计与实现

基于Django以及vue的电子商城系统设计与实现 引言 随着电子商务的快速发展&#xff0c;越来越多的企业和个人选择搭建线上商城&#xff0c;以提供更加便捷的购物体验。本文基于Python开发了一套电子商城系统&#xff0c;后端采用Django框架&#xff0c;前端使用Vue.js&#x…...

电脑变慢、游戏卡顿,你的SSD固态可能快坏了!

电脑用久了&#xff0c;很多人都会感觉速度变慢&#xff0c;开机变慢、文件复制时间变长&#xff0c;甚至莫名其妙的卡顿。你可能怀疑是系统问题&#xff0c;或者内存不够&#xff0c;但往往被忽略的一个关键因素——你的硬盘&#xff0c;可能正在悄悄老化。 硬盘寿命不是永久的…...

开源机器人+具身智能 解决方案+AI

开源机器人、具身智能(Embodied Intelligence)以及AI技术的结合,可以为机器人领域带来全新的解决方案。以下是这一结合的可能方向和具体方案: 1. 开源机器人平台 开源机器人平台为开发者提供了灵活的基础架构,可以在此基础上结合具身智能和AI技术。以下是一些常用的开源机…...

AI使用场景简单测试

前言 今天来分享下AI的2个实用场景&#xff0c;我这里是使用的博主&#xff1a;小虚竹&#xff0c;搭建的AI服务&#xff0c;用的ChatGPT 4O模型&#xff0c;主要是试了3个场景&#xff0c;服装设计、直播带货话术、检验报告分析。 一、服装设计 对于最后需要的裁片设计上的尺寸…...

Foundation CSS 可见性

Foundation CSS 可见性 引言 在网页设计中,CSS可见性是一个至关重要的概念。它决定了元素在网页上是否可见,以及如何显示。Foundation CSS 是一个流行的前端框架,它提供了丰富的工具和组件来帮助开发者构建响应式和可访问的网页。本文将深入探讨 Foundation CSS 中的可见性…...

【并发控制、更新、版本控制】.NET开源ORM框架 SqlSugar 系列

系列文章目录 &#x1f380;&#x1f380;&#x1f380; .NET开源 ORM 框架 SqlSugar 系列 &#x1f380;&#x1f380;&#x1f380; 文章目录 系列文章目录一、并发累计&#xff08;累加&#xff09;1.1 单条批量累计1.2 批量更新并且字段11.3 批量更新并且字段list中对应的…...

DeepSeek-R1本地搭建

1. 前言 现在deepseek火上天了&#xff0c;因为各种应用场景,加上DeepSeek一直网络异常&#xff0c;所以本地部署Deepseek成为大家的另一种选择。 目前网络上面关于DeepSeek的部署方式有很多&#xff0c;但是太麻烦了&#xff0c;本文是一篇极为简单的DeepSeek本地部署方式&…...

查出 product 表中所有 detail 字段包含 xxx 的完整记录

您可以使用以下 SQL 查询语句来查出 product 表中所有 detail 字段包含 oss.kxlist.com 的完整记录&#xff1a; SELECT * FROM product WHERE INSTR(detail, oss.kxlist.com) > 0;下面是detail字段包含的完整内容 <p><img style"max-width:100%;" src…...

python技术可以开发的应用类型有哪些?

Python 是一种功能强大且灵活的编程语言,广泛应用于多个领域。以下是一些常见的 Python 应用程序开发领域及其具体案例: 1. Web 开发 Python 提供了多个流行的 Web 框架,如 Django 和 Flask,用于构建 Web 应用程序。 示例:使用 Flask 构建简单的 Web 应用 Python复制 …...

Redis存储⑥Redis五大数据类型之 Zset

目录 1. Zset 有序集合 1.1 Zset 有序集合常见命令 zadd zcard zcount zrange zrevrange zrangebyscore&#xff08;弃用&#xff09; zpopmax bzpopmax zpopmin bzpopmin zrank zrevrank zscore zrem zremrangebyrank zremrangebyscore zincrby 1.2 Zset有…...

Kafka 读写示例

一、概述 Kafka 是一款流行的分布式消息队列系统,具有高吞吐量、可扩展性和持久性等优点。本文将介绍如何使用 Kafka 进行消息的生产和消费。 二、Kafka 生产者 1. 生产者配置 以下是一些常用的 Kafka 生产者配置参数: 参数描述bootstrap.serversKafka 集群的地址,用于生…...

将Excel中的图片保存下载并导出

目录 效果演示 注意事项 核心代码 有需要将excel中的图片解析出来保存到本地的小伙子们看过来&#xff01;&#xff01;&#xff01; 效果演示 注意事项 仅支持xlsx格式&#xff1a;此方法适用于Office 2007及以上版本的.xlsx文件&#xff0c;旧版.xls格式无法使用。 图片名…...

SQL注入之布尔和时间盲注,sqli-labs

实验环境&#xff1a; sqli-labs&#xff0c;小皮面板搭建&#xff0c;edge浏览器 apache&#xff1a;2.4.39&#xff0c;MySQL&#xff1a;5.7 PHP&#xff1a;5.39 Python&#xff08;pycharm2023&#xff09;:3 less-8 布尔盲注&#xff1a; 1.我这里是采用最简单的直接采…...

Ubuntu 22.04完整安装Xinference及解决依赖报错

注&#xff1a;文中使用的环境为Ubuntu 22.04 LTS CUDA 12.4.1 1、创建conda环境 conda create -n xinference python3.11 -y conda activate xinference2、安装Xinference pip install "xinference[all]"3、解决报错 Pytorch报错 根据Pytorch安装指引进行安装…...

基于云计算、大数据与YOLO设计的火灾/火焰目标检测

摘要&#xff1a;本研究针对火灾早期预警检测需求&#xff0c;采用在Kaggle平台获取数据、采用云计算部署的方式&#xff0c;以YOLO11构建模型&#xff0c;使用云计算服务器训练模型。经训练&#xff0c;box loss从约3.5降至1.0&#xff0c;cls loss从约4.0降至1.0&#xff0c;…...

C与C++的区别,类型转换,引用

1.从C到C 语言的区别 C语言 编译性语言 面向过程语言灵活 移植性好 效率高shell 解释性语言 面向过程语言Linux运维C 编译性语言 面向对象面向对象语言效率最高的 应用领域&#xff1a;系统开发(APP开发&#xff0c;服务器开发)&#xff0c;引擎开发&#xff0c;游戏开发&…...

YOLO自定义数据集实现K折交叉验证——K-Fold Cross Validation

实现K折交叉验证&#xff08;K-Fold Cross Validation&#xff09;对于YOLO&#xff08;You Only Look Once&#xff09;自定义数据集的目标检测任务可以显著提升模型的可靠性和泛化能力。 1. 数据集准备 首先&#xff0c;你需要确保你的数据集符合YOLO的格式&#xff0c;具体…...

刚体的力+射线相关知识点+延迟函数

AddForceAtPosition cube0.AddForceAtPosition(Vector3.forward*5,target.transform.position); force:给cube0一个力&#xff0c;控制cube0的移动&#xff1b; position&#xff1a;cube0和所给点的连线力得大小&#xff0c;这个力跟移动方向有夹角&#xff0c;会造成cube0…...

集合家族详情

一、Java集合框架全景图 1.1 核心接口层次结构 graph TDA[Iterable] --> B[Collection]B --> C1[List]B --> C2[Set]B --> C3[Queue]C1 --> D1[ArrayList]C1 --> D2[LinkedList]C2 --> E1[HashSet]C2 --> E2[TreeSet]C3 --> F1[PriorityQueue]G[M…...

go语言简单快速的按顺序遍历kv结构(map)

文章目录 需求描述用map实现按照map的key排序用二维切片实现用结构体实现 需求描述 在go语言中&#xff0c;如果需要对map遍历&#xff0c;每次输出的顺序是不固定的&#xff0c;可以考虑存储为二维切片或结构体。 假设现在需要在页面的下拉菜单中展示一些基础的选项&#xff…...

【竞技宝】LOL-LPL:EDG3-0零封LNG

北京时间2月12日,英雄联盟LPL2025正在如火如荼的进行之中,昨日迎来LNG对阵EDG,以下是本场比赛的详细战报。 第一局: EDG:杰斯、赵信、维克托、女枪、芮尔 LNG:猴子、猪妹、飞机、韦鲁斯、布隆 首局比赛,EDG在蓝色方,LNG在红色方。阵容方面,EDG点出了杰斯、赵信、维克托、女枪…...

在fedora41中安装钉钉dingtalk_7.6.25.4122001_amd64

在Fedora-Workstation-Live-x86_64-41-1.4中安装钉钉dingtalk_7.6.25.4122001_amd64.deb 到官网下载钉钉Linux客户端com.alibabainc.dingtalk_7.6.25.4122001_amd64.deb https://page.dingtalk.com/wow/z/dingtalk/simple/ddhomedownload#/ 一、直接使用dpkg命令安装deb包报错…...

看期货用的指标,可以提示买卖点和K线转折变颜色的主图指标源码下载

A:MA(CLOSE,17)ABS(MA(CLOSE,17)-REF(MA(CLOSE,17),1)); B:MA(CLOSE,17)MA(CLOSE,17)-REF(MA(CLOSE,17),1); 分界线:IF(MA(CLOSE,17)<B,B,MA(CLOSE,17)),COLORFF00FF,LINETHICK2; 操作线:分界线-(EMA(C,3)-分界线),COLOR00FFFF,LINETHICK2; GUP:MA(C,5),COLORWHITE,LINE…...

【PS 2022】Adobe Genuine Service Alert 弹出

电脑总是弹出Adobe Genuine Service Alert弹窗 1. 不关掉弹窗并打开任务管理器&#xff0c;找到Adobe Genuine Service Alert&#xff0c;并右键进入文件所在位置 2 在任务管理器中结束进程并将文件夹中的 .exe 文件都使用空文档替换掉 3. 打开PS不弹出弹窗&#xff0c;解决&a…...