草庐IT

1·ESP32-C3入门教程——不止点亮一颗灯

【写在前面】最近在读《ESP32-C物联网开发实战》,个人感觉书在这一块讲的并不太适合初学者。这里反过来,先通过实践的方式实现功能,搞懂每一行代码的实现机制之后,再去一个个研究硬件的原理和机制。  如果还没搭建好环境,或者碰到找不到头文件的问题,以下指路:环境搭建踩坑记http://t.csdn.cn/Z243W目录一点必要的准备知识从点灯开始入坑level1:光速点亮一颗灯level2:点灯只是计划的一部分——利用定时器控制定时器句柄结构体初始化部分API的实现过程梳理level3:实现彩色光污染——利用PWM控制拓展 小结一点必要的准备知识链接指路:这是关于ESP32C3最通用入门知识整理

单片机设计_语音识别分类智能垃圾桶(STM32 ESP8266 LD3320)

想要更多项目私wo!!!一、电路设计        离线语音识别识别垃圾种类并且垃圾桶自动翻盖:说出唤醒词“垃圾桶”后,再说一句垃圾名称,语音识别模块端识别到相应关键词,便会将结果通过串口发送到STM32端,STM32端接着会发送打开相应垃圾桶盖的指令,6s后,垃圾桶盖自动关闭。其中翻盖功能是通过STM32端控制舵机实现。        语音播报功能:STM32端若判断到有人说出唤醒词了,通过串口发送指令给语音播报模块,外放喇叭便会播报“你好”的音频,若判断到相应的垃圾种类,便会播报相应的垃圾种类音频。        APP/网页端远程控制垃圾桶:STM32端通过串口连接WIFI模块esp82

实用工具、01 效率篇 | 几个操作快速提升 Typora 使用体验

本篇文章旨在提高大家记笔记的效率,分享的工具请按个人需求安装Typora-plugins为Typora添加更多新功能,我最喜欢的是多标签页管理obgnail/typora_plugin:Typora插件集合,功能增强工具。(github.com)AutoHotkey快速为字体添加颜色样式;快速换行;一键Latex化\(f(i,j,k)\)AutoHotkey选中文字片段ALT+X橙色ALT+Z粉红色ALT+D红色ALT+C换行符ALT+S一键Latex;Typora;快捷增加字体颜色;SendInput{Text}解决中文输入法问题#IfWinActiveahk_exeTypora.exe{;

NRF24L01学习操作教程(二)——NRF实现一对一,一对多通讯

上篇博客链接:https://blog.csdn.net/DIVIDADA/article/details/130599974?spm=1001.2014.3001.5501以下单片机例程都是基于STM32HAL库,在文档末尾,我会提供参考博客和源码程序的链接。文章目录通讯实例与代码实现nrf24l01实现一对一单向通讯nrf24l01实现一对一双向通讯nrf24l01实现一对多双向通讯总结参考博客通讯实例与代码实现在CubeMx中配置单片机时钟、SPI通讯接口、NRF24L01接口等,并生成Keil工程将NRF24L01的驱动程序的.c文件和.h文件添加到工程目录下,重新编译程序nrf24l

微信小程序入门01-工具的下载安装及模板的安装

小程序开发现在已经有多种模式了,有使用uniapp开发的,使用微信开发者工具开发的,还有低代码工具也支持开发小程序的。在众多开发模式中,使用官方开发者工具开发也是一种形式。本篇我们就介绍一下如何用微信开发者工具搭建小程序的开发环境。1下载工具官方提供的开发者工具可以通过官方的开发文档下载,下载地址https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html一般选择稳定版安装即可,我们这里选择windows64位的安装包2安装工具下载完毕后,双击安装包进入安装界面接受协议选择安装路径,默认安装在C盘,我们也可以自己

C++ 学习笔记、01 | 开发简单职工管理系统遇到的一些问题

记录开发简单职工管理系统遇到的一些问题,黑马教程https://www.bilibili.com/video/BV1et411b73ZP147~P166头文件与源文件头文件只声明,源文件来实现(本质上是类内声明类外实现)源文件需要引用特定的头文件ifndefOOPFINAL_WORKER_H#defineOOPFINAL_WORKER_H#include#includeusingnamespacestd;classWorker{public:virtualvoidShowInfo()=0;virtualstringgetDeptName()=0;intm_Id;stringm_Name;int

【Unity URP】风格化树01:SpeedTree制作插片树

写在前面OMG,距离上一篇已经过去3天了,今天是ddl,赶紧水一篇(不是)做树模型的记录文章。1前期尝试做树的方法有很多,3D建模软件手撸、Houdni程序化生成、或者SpeedTree和TreeIt,在定下来用ST做插片树之前,我做了几个简单的尝试。1.1 Blender制作树直接建模!树干->几个球变形面->在面上用粒子特效放上“叶子”,这样的话面数将会非常高,,好像大概有5W+另外需要赋予球型法线,为了之后阴影实现的效果更好,具体方法就是DataTransfer:把法线显示出来可以更直观:额,,这种不考虑面数的建模法面数简直多的恐怖。1.2SpeedTree随机生成片相比Blender里

力扣算法刷题Day42|动态规划:01背包问题 分割等和子集

力扣题目:01背包问题(二维数组)刷题时长:参考题解解题方法:动态规划+ 二维dp数组复杂度分析时间空间问题总结理解递推公式困难本题收获动规思路:两层for循环,第一层i遍历物品,第二层j枚举背包容量以内所有值确定dp数组及下标的含义:dp[i][j]表示从下标为[0-i]的物品范围中任意取,放进容量为j的背包后价值总和的最大值确定递推公式:dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i])当背包容量小于物品重量,不放物品,此时价值总和为dp[i-1][j]。即当物品i的重量大于背包j的重量时,物品i无法放进背包中,所以背包内的价值依然

算法记录 | Day01(数组01)

二分查找移除元素704题:二分查找【思路】有序数组按升序排序,如何找到目标值?时间复杂度O(logN),主要通过取中间点来节省遍历的次数,重点在于边界值的判断,找到合适的那一半数据空间。classSolution{publicintsearch(int[]nums,inttarget){//条件里已为升序,不再单独排序//确认数组左右边界intleft=0;intright=nums.length-1;//此处结束循环判断使用下标while(leftnum){//目标值落在右半段。移动筛选区间的左边界,减少一半选择范围left=mid+1;}else{//目标值落在左半段。移动筛选区间的右边界