AI工具合集推荐
今天给大家推荐个好用的网站 ai-bot.cn 这个网站基本上什么AI工具都有,涵盖各个方面,我们常用的可灵、deepseek、kimi等常用ai工具,上面都有收录而且该网站还在不断更新,大概有上千个AI工具,推荐大家收藏一下并置顶!
180°舵机如何控制?
180° 舵机最常见的是 SG90 舵机,用的也最多,非常便宜,某多多 5.6 块就可以买到一个,大概长这样: 前言大二刚学单片机,觉得单片机很厉害,然后就想做一个宿舍智能开门装置。然后我就想其中最主要的问题是解决拉锁栓,拉锁栓可以用一个动力装置来完成,只要找到这个装置,那么就可以做出来了,然后我就想尽办法找这个装置。功夫不负有心人,经过几天的寻找,终于在某个视频中找到了他的身影,得知这个装置就叫做舵机。 控制原理探索知道了它是谁,那么下一步就是要学会控制它,然后我就找了一些帖子来了解如何去控制舵机。大多看到的是这样的解释: 舵机的控制一般需要一个 20ms 左右的时基脉冲,该脉冲的高电平部分一般为 0.5ms~2.5ms 范围内的角度控制脉冲部分。以 180 度角度伺服为例,那么对应的控制关系是这样的: 123456789100.5ms ---------- 0 度;1.0ms ---------- 45 度;1.5ms ---------- 90 度;2.0ms ---------- 135 度;2.5ms ---------- 180 度; 起初我以为在 20ms...
CubeMX DMA 内存到内存配置
然后通道和其他都默认即可然后生成代码 在代码中定义两个数组 一个源数组,一个目标数组 类型都要是 uint32_t 的。 1uint32_t srcbuf[5]={1,2,3,4,5},terbuf[5]; 然后启动 DMA 搬运数据 ,数组需要强制类型转化为 uint32_t,最后一个参数是数组的长度乘上一个数据的长度。 1HAL_DMA_Start(&hdma_memtomem_dma1_channel2, (uint32_t)srcbuf, (uint32_t)terbuf, 5*sizeof(uint32_t); 然后打印出来 1234for(int i=0;i<5;i++){ printf("%ld\n ",terbuf[i]);} 结果 1234512345 其他类型的数据也同理。
CubeMX DMA+空闲中断实现串口收发数据
其他参数都默认即可。 记得打开串口接收中断然后在主函数中开启空闲中断和 DMA 接收。recbuf 是数据缓存数组自己定义一个,1024 是数组长度。 12__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE); HAL_UART_Receive_DMA(&huart1,recbuf,1024); 然后在串口中断处理函数(USART1_IRQHandler)中添加以下代码,即可。 123456if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)){ __HAL_UART_CLEAR_FLAG(&huart1,UART_FLAG_IDLE); HAL_UART_DMAStop(&huart1); HAL_UART_Transmit_DMA(&huart1,recbuf,1024-__HAL_DMA_GET_COUNTER(&hdma_usart1_rx)); ...
CubeMX DMA+ADC
选择 adc1 的通道 0 开启持续转换模式,转换周期设置为 239.5 ,可以自行调整。设置 dma 添加 dma 通道 选择 adc1 然后将模式选择为循环模式,其他默认即可。然后在 main 函数初始化后添加如下代码 开启转换 如果一轮只搬运一次数据就可以定义个变量,如果要一轮搬运多次数据,就定义一个数组进行接收,第三个参数改为数组的长度即可。 1HAL_ADC_Start_DMA(&hadc1,&dy,1); 然后在主循环里打印出来。这样配置 只需调用一次开始函数,DMA 就会一直进行转换,但转换周期不能太短,会卡死。 12printf("%.2f\n",dy*3.3/4096);HAL_Delay(500);
城市间紧急救援 7-3
题目描述作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。 输入格式输入第一行给出 4 个正整数 N、M、S、D,其中 N(2≤N≤500)是城市的个数,顺便假设城市的编号为 0 ~ (N−1);M 是快速道路的条数;S 是出发地的城市编号;D 是目的地的城市编号。 第二行给出 N 个正整数,其中第 i 个数是第 i 个城市的救援队的数目,数字间以空格分隔。随后的 M 行中,每行给出一条快速道路的信息,分别是:城市 1、城市 2、快速道路的长度,中间用空格分开,数字均为整数且不超过 500。输入保证救援可行且最优解唯一。 输出格式第一行输出最短路径的条数和能够召集的最多的救援队数量。第二行输出从 S 到 D 的路径中经过的城市编号。数字间以空格分隔,输出结尾不能有多余空格。 输入样例12345674 5 0 320 30 40 100 1...
公路村村通 Prim算法 (链式前向星实现)
题目描述现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。 输入格式输入数据包括城镇数目正整数 N(≤1000)和候选道路数目 M(≤3N);随后的 M 行对应 M 条道路,每行给出 3 个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从 1 到 N 编号。 输出格式输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出 −1,表示需要建设更多公路。 输入样例123456789101112131415166 151 2 51 3 31 4 71 5 41 6 22 3 42 4 62 5 22 6 63 4 63 5 13 6 14 5 104 6 85 6 3 输出样例112 思路链式前向星存图,然后从某一个结点开始遍历整个图,每次选择已经收入囊中的结点距离他们所能到达的结点的最小权值即可。 AC...
7-6 传染链 (25分)
题目描述某病毒可以人传人,且传染能力极强,只要与已感染该病毒的人发生接触即刻感染。现给定一些感染该病毒的人员接触关系,要求你找出其中最早最长的一条传染链。 输入格式输入在第一行中给出一个正整数 N(N≤104),即感染病毒的人员总数,从 0 到 N−1 进行编号。 随后 N 行按照编号顺序给出人员接触信息,每行按以下格式描述该人员的接触对象: 1k 接触人员1 …… 接触人员k 其中 k 是该编号人员接触的其他人总数,后面按照时间先后给出所有接触的人员编号。题目保证传染源头有且仅有一个,且已被感染人员不会与另一个感染人员再接触。 输出格式第一行输出从源头开始的最早最长传染链长度。 第二行输出从源头开始的最早最长传染链,编号之间以 1 个空格分隔,行首尾不得有多余空格。这里的最早最长传染链是指从源头开始的传染链上的人数最多,且被感染的时间最早。 所谓时间最早指的两个长度相等的传染链{a1,a2,…,an}和{b1,b2,…,bn},存在 1≤k<n,对于所有的 i (1≤i<k)都满足 ai=bi,且 ak 被感染的时间早于 bk...
7-5 哈夫曼树 (20分)
题目描述 编写一个哈夫曼编码译码程序。针对一段文本,根据文本中字符出现频率构造哈夫曼树,给出每个字符的哈夫曼编码,并进行译码,计算编码前后文本大小。为确保构建的哈夫曼树唯一,本题做如下限定: 1.选择根结点权值最小的两棵二叉树时,选取权值较小者作为左子树。 2.若多棵二叉树根结点权值相等,则先生成的作为左子树,后生成的作为右子树,具体来说:i) 对于单结点二叉树,优先选择根结点对应字母在文本中最先出现者,如文本为 cba,三个字母均出现 1 次,但 c 在文本中最先出现,b 第二出现,故则选择 c 作为左子树,b 作为右子树。ii) 对于非单结点二叉树,先生成的二叉树作为左子树,后生成的二叉树作为右子树。iii. 若单结点和非单结点二叉树根结点权值相等,优先选择单结点二叉树。 3.生成哈夫曼编码时,哈夫曼树左分支标记为 0,右分支标记为 1。 输入格式 输入为 3 行。第 1 行为一个字符串,包含不超过 5000 个字符,至少包含两个不同的字符,每个字符为 a-z 的小写字母。第 2、3 行为两个由 0、1 组成的字符串,表示待译码的哈夫曼编码。 输出格式...








