外国网站英语要求/上海短视频培训机构

外国网站英语要求,上海短视频培训机构,网站后台数据应该怎么做,天河网站建设开发基于FreeRTOS的STM32四轴飞行器: 十.检测遥控器 一.检测遥控器连接逻辑二.遥控器的解锁情况三.遥控器控制飞机运转 一.检测遥控器连接逻辑 判断是否进入定高模式: 根据返回值判断遥控器的连接情况: 实现检测函数: 因为该函数在通信任务中…

基于FreeRTOS的STM32四轴飞行器: 十.检测遥控器

  • 一.检测遥控器连接逻辑
  • 二.遥控器的解锁情况
  • 三.遥控器控制飞机运转

一.检测遥控器连接逻辑

判断是否进入定高模式:
在这里插入图片描述
根据返回值判断遥控器的连接情况
在这里插入图片描述
实现检测函数:
在这里插入图片描述
因为该函数在通信任务中调度6ms一次,可以使用cnt进行计时,判断是否失联:
开头初始化 cnt 为200可以防止一启动没有连接显示连接成功的问题。

/*** @description: 用来检测遥控器的连接情况*  连接成功:*      只要收到一条数据,就算连接成功*  失联:*      如果连续 1.2s 没有收到数据,表示失联* @param {Com_Status} isReceiveData 是否收到遥控器数据* @return {*}  是否连接成功*/
Com_Status App_Communication_CheckConnection(Com_Status isReceiveData)
{                             /* 记录连续收不到数据的次数 */static uint8_t cnt = 200; /* 初始化为200可以防止一启动时候,没有连接成功显示连接成功问题*//* 1. 如果收到数据,表示连接成功 */if(isReceiveData == Com_OK){cnt = 0;return Com_OK;}/* 2. 表示没有收到数据: 计时, 连续200次(1.2s) */cnt++;if(cnt >= 200){cnt = 200; /* 避免溢出 */return Com_FAIL;}return Com_OK;
}

二.遥控器的解锁情况

创建一个状态机进行状态转换。


/*** @description: 遥控器的解锁*  把油门拉到最高,持续1s,然后再拉到最低,持续1s, 解锁成功.**   自由状态*       在此状态, 如果油门拉到最高(>=960), 进入  最大值附近 状态*   最大值附近*       如果油门持续时间超过1s ,离开最大值状态*       如果在这里持续时间不到1s, 退回到 自由状态*   离开最大值*       如果出现油门 <=20, 进入最小值附近*   最小值附近*       如果持续时间大于1s, 进入解锁状态*       如果持续时间不到1s, 进入自由状态*   解锁***** @param {Com_Status} isRemoteConnected 是否连接成功* @return {*} 是否解锁成功 Com_OK 解锁成功  其他 解锁失败*/
Com_Status App_Communication_RemoteUnlock(Com_Status isRemoteConnected)
{/* 油门在最大值和最小值附近的持续时间 */static uint8_t thrMaxDuration = 0;static uint8_t thrMinDuration = 0;/* 定义油门的状态 */static Com_RemoteStatus remoteStatus = THR_FREE;/* 1. 如果失联状态, 直接解锁失败 */if(isRemoteConnected != Com_OK){remoteStatus         = THR_FREE;joyStick.isFixHeight = 0;isFixHeight          = Com_FAIL;return Com_FAIL;}switch(remoteStatus){case THR_FREE:{/* 在自由状态, 最大值和最小值附近持续时间从0计数 */thrMaxDuration = 0;thrMinDuration = 0;if(joyStick.THR >= 960){remoteStatus = THR_MAX;}break;}case THR_MAX:{if(joyStick.THR >= 960){/* 判断持续时间 */thrMaxDuration++;if(thrMaxDuration >= 200){remoteStatus = THR_MAX_LEAVE;}}else{/* 证明在最大值附近没有坚持1.2s */remoteStatus = THR_FREE; /* 回到自由状态 */}break;}case THR_MAX_LEAVE:{if(joyStick.THR <= 20){remoteStatus = THR_MIN;}break;}case THR_MIN:{if(joyStick.THR <= 20){thrMinDuration++;if(thrMinDuration >= 200){remoteStatus = THR_UNLOCK;}}else{remoteStatus = THR_FREE;}break;}case THR_UNLOCK:{/* 如果解锁状态下,油门长时间(1min) <=20, 马上锁定 */static uint32_t lowDuration = 0;if(joyStick.THR <= 20){lowDuration++;if(lowDuration >= 200 * 50){remoteStatus = THR_FREE;lowDuration  = 0;}}else{lowDuration = 0;}/* 解锁成功, 直接返回成功 */return Com_OK;}default:break;}joyStick.isFixHeight = 0;isFixHeight          = Com_FAIL;/* 默认返回解锁失败 */return Com_FAIL;
}

三.遥控器控制飞机运转

创建飞机飞行的函数。

/*** @description: 让飞机工作(飞行)* @param {Com_Status} isRemoteUnlock* @return {*}*/
void App_Flight_Work(Com_Status isRemoteUnlock)
{if (isRemoteUnlock != Com_OK || joyStick.THR <= 30){motorLeftTop.speed =motorLeftBottom.speed =motorRightTop.speed =motorRightBottom.speed = 0;}Inf_Motor_AllMotorsWork();
}

解决遥控器开机直接解锁的bug:
如果失联将状态变为FREE
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Torch.expand等效矩阵相乘

文章目录 1. description2. pytorch 1. description torch.expand:主要作用是将向量按照指定维度进行复制&#xff0c;expand 可以用全一向量和给定向量以矩阵相乘的方式等效表示n_expand4 2. pytorch torch import torch import torch.nn as nntorch.set_printoptions(pr…

尝试在软考65天前开始成为软件设计师-计算机网络

OSI/RM 七层模型 层次名功能主要协议7应用层实现具体应用功能 FTP(文件传输)、HTTP、Telnet、 POP3(邮件)SMTP(邮件) ------- DHCP、TFTP(小文件)、 SNMP、 DNS(域名) 6表示层数据格式,加密,压缩.....5会话层建立,管理&终止对话4传输层端到端连接TCP,UDP3网络层分组传输&a…

Java 双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]

集合 关系 介绍 Deque 是一个接口 LinkedList 是这个接口的实现类 题目 输入输出 滑动窗口 基于双端队列实现 Deque<Integer> deque new LinkedList<>(); 滑动窗口代码 洛谷 public static List<Integer> maxSlidingWindow(int[] nums, int k) {List&l…

Qemu-STM32(十):STM32F103开篇

简介 本系列博客主要描述了STM32F103的qemu模拟器实现&#xff0c;进行该项目的原因有两点: 作者在高铁上&#xff0c;想在STM32F103上验证一个软件框架时&#xff0c;如果此时掏出开发板&#xff0c;然后接一堆的线&#xff0c;旁边的人估计会投来异样的目光&#xff0c;特别…

QT开发(6)--信号和槽

这里写目录标题 1. 信号和槽概述信号的本质槽的本质 2. 信号和槽的使用2.1 连接信号和槽2.2 文档查询 3.自定义信号和槽3.1 自定义槽3.2 自定义信号3.3 带参数的信号和槽 4. 信号和槽的断开 1. 信号和槽概述 在Qt中&#xff0c;⽤⼾和控件的每次交互过程称为⼀个事件。⽐如&quo…

【前端】Canvas画布实现在线的唇膏换色功能

【前端】Canvas画布实现在线的唇膏换色功能 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 【前端】Canvas画布实现在线的唇膏换色功能背景概述以下是我们的实现方法!第一步 — 找…

异步编程与流水线架构:从理论到高并发

目录 一、异步编程核心机制解析 1.1 同步与异步的本质区别 1.1.1 控制流模型 1.1.2 资源利用对比 1.2 阻塞与非阻塞的技术实现 1.2.1 阻塞I/O模型 1.2.2 非阻塞I/O模型 1.3 异步编程关键技术 1.3.1 事件循环机制 1.3.2 Future/Promise模式 1.3.3 协程&#xff08;Cor…

QT网页显示的几种方法及对比

一.直接跳转打开网页 1.使用QDesktopServices::openUrl调用系统浏览器 原理&#xff1a;直接调用操作系统默认浏览器打开指定URL&#xff0c;不在应用程序内嵌入网页。 优点&#xff1a; 实现简单&#xff0c;无需额外模块或依赖。 适用于仅需跳转外部浏览器的场景。 缺点&…

【赵渝强老师】在Docker中运行达梦数据库

Docker是一个客户端服务器&#xff08;Client-Server&#xff09;架构。Docker客户端和Docker守护进程交流&#xff0c;而Docker的守护进程是运作Docker的核心&#xff0c;起着非常重要的作用&#xff08;如构建、运行和分发Docker容器等&#xff09;。达梦官方提供了DM 8在Doc…

python转换wav到mp3

尺寸好大&#xff0c;8G多&#xff0c;但是&#xff0c;领动的车机不识别.wav格式的音乐。 用python转换一下。 import os from pydub import AudioSegment filesos.listdir(E:\\dy2023) for f in files:if f.endswith(.wav):try:wavAudioSegment.from_wav(E:\\dy2023\\%s % f…

创建自己的github.io

1、创建GitHub账号 GitHub地址&#xff1a;https://github.com/ 点击Sign up创建账号 如果已创建&#xff0c;点击Sign in登录 2、创建仓库 假设Owner为username&#xff0c;则Repository name为username.github.io说明&#xff1a; 1、Owner为用户名 2、Repository name为仓…

Linux系统docker部署Ollama本地大模型及部署Hugging Face开源模型,ollama相关注意点,非ollama模型创建,模型量化,显存建议

本文主要描述在Linux系统使用docker部署ollama自有模型以及Hugging Face开源模型&#xff0c;也涉及到一些相关注意点&#xff0c;欢迎沟通讨论~ 拉取镜像 拉取ollama最新镜像&#xff1a;docker pull ollama/ollama:latest 运行ollama 执行&#xff1a;docker run -d --res…

在 Elasticsearch 中扩展后期交互模型 - 第 2 部分 - 8.18

作者&#xff1a;来自 Elastic Peter Straer 及 Benjamin Trent 本文探讨了如何优化后期交互向量&#xff0c;以适应大规模生产工作负载&#xff0c;例如减少磁盘空间占用和提高计算效率。 在之前关于 ColPali 的博客中&#xff0c;我们探讨了如何使用 Elasticsearch 创建视觉搜…

深入理解 JavaScript/TypeScript 中的假值(Falsy Values)与逻辑判断 ✨

&#x1f579;️ 深入理解 JavaScript/TypeScript 中的假值&#xff08;Falsy Values&#xff09;与逻辑判断 在 JavaScript/TypeScript 开发中&#xff0c;if (!value) 是最常见的条件判断之一。它看似简单&#xff0c;却隐藏着语言的核心设计逻辑&#xff0c;也是许多开发者…

【大语言模型_6】mindie启动模型错误整理

一、启动报 [hccl_runner.cpp:141] AllGatherHcclRunner:0 HcclCommInitRootInfo fa il, error:2, rank:0, rankSize:2 背景&#xff1a;运行DeepSeek-R1-Distill-Qwen-14B模型&#xff0c;在2张300 P卡可以运行&#xff0c;单独一张启动报以上错误。 问题分析&…

【计算机网络】网络简介

文章目录 1. 局域网与广域网1.1 局域网1.2 广域网 2. 路由器和交换机3. 五元组3.1 IP和端口3.2 协议3.3 协议分层 4. OSI七层网络协议5. TCP/IP五层模型5.1 TCP/IP模型介绍5.2 网络设备所在分层 6. 封装与分用6.1 数据包的称谓6.2 封装6.3 分用 1. 局域网与广域网 1.1 局域网 …

在QT中进行控件提升操作

目录 一、概述 二、功能需求 三、提升操作 1&#xff09;拖入标准控件 2&#xff09;自定义类 3&#xff09;提升控件 一、概述 QT中提供的标准控件能够满足我们大多数情况下的功能需求&#xff0c;但是在一些特殊应用场合&#xff0c;我们可能需要对控件的功能进行扩展&am…

如何自定义知行之桥Webhook端口返回的Response消息

一、Webhook端口功能概述 知行之桥的Webhook端口提供灵活的消息响应机制&#xff0c;支持用户通过修改配置文件自定义返回的消息体内容&#xff0c;能够查看是否调用接口成功、数据是否推送成功以及自定义返回给用户端的响应内容。 本指南将详解如何通过脚本配置实现以下需求…

蓝桥杯学习-13回溯

13回溯 一、回溯1 例题1–递归实现排列型枚举-蓝桥19684 1.递归可以解决不定次数的循环问题 2.使用数组来标记数字是否被选过import java.util.Scanner;public class Main {static int n;static boolean[] st new boolean[10]; //判断数字是否被选过static int[] path ne…

【IDEA中配置Maven国内镜像源】

1. 为什么需要配置国内镜像源&#xff1f; 首先&#xff0c;Maven本身的工作原理是通过从仓库中下载依赖包。而这些依赖通常来自于 Maven中央仓库&#xff08;位于国外&#xff09;&#xff0c;由于网络原因&#xff0c;我们在国内访问这些远程仓库的速度比较慢&#xff0c;甚至…