一. 前言
在控制物体移动方面,像控制智能小车、平衡车、四轴飞控,双轴遥感按键远比按键要实用,而且引脚少,程序编写简单,是时候该放弃对按键的使用了,来看看双轴遥感按键吧!
二. 双轴遥感按键简介
双轴,可以输出X,Y两个方向上的电压值表示当前遥感所处的位置。按键,可以按下,具有按键的功能,看到这里是不是觉得它功能强大!!!。每个轴共有三个引脚,分别是VCC,GND和信号引脚。所以说,它一共用六个引脚,外加按键的四个引脚。VCC可以接3.3-5V。信号引脚输出的电压为0-VCC。遥感处于中间位置的时候,两个轴输出的电压为VCC/2。以X轴为例,如果遥感在最右边,那么输出为0V,在最左边,那么输出为VCC。是不是觉得采集它的数据很容易,通过STM32内部的ADC就可以很轻松的采集到了,(#^.^#)。
二. 双轴遥感信号采集
采集部分我打算略写,一共两个通道,X,Y,使用ADC采集,ADC的配置基本上是通用的。采集到的值理论上为0-4096。
三.双轴遥感信号校准
由于实际上采集到的信号不为0-4096,这里需要有一个校准的操作。也就是采集多次各个方向上的遥感数据,然后取平均。X轴的最左边为例,这里采集了400次。同时对模拟量进行一个判断,在最左边的就要,否则舍弃。/*XL方向校准*/
void Rocker1CalibrationXL(void)
{
uint16_ti;
uint32_t valueSum = 0;
for(i = 0 ;i < 400; )
{
uint16_tvalue=getX1Value();/*获取X轴的模拟量*/
if(value>0xf600)/*判断模拟值,是不是在左边了*/
{
valueSum += value;
i++;
}
}
XOffSetL = valueSum / 400;
}
四.双轴遥感信号归一化
这里将X,Y两轴的信号全部归一化到0-100区间内,至于为什么归一化到这个区间内,是为了方便计算遥感的角度值。具体做法如下- 获取原始数据
- 计算原始数据到对应两边界的距离
- 将计算得到的结果扩大100倍(避免小数),除以区间范围
- 左边 加(100 - 右边)除以2得到最终结
XValue = getX1Value(); //获取X方向遥感数值
if(XValue > XOffSetL)
XtempL = 0; /*小于左边界,直接复制为0*/
else
XtempL = XOffSetL - XValue ;
if(XValue < XOffSetR)
XtempR = 0; /*大于右边界,直接复制为0*/
else
XtempR = XValue - XOffSetR;
uint32_t XtL = XtempL * 100;
uint32_t XtR = XtempR * 100;
XtL = XtL / (XOffSetL - XOffSetR);
XtR = XtR / (XOffSetL - XOffSetR);
X = (XtL + (100 - XtR)) / 2; /*结果为遥感到左边界的距离,0 - 100*/
五.计算双轴遥感的角度
计算出来的角度分布如下图所示。先来想一下如何将遥感数据对应起这些角度来。不妨先看看遥感数据的特点。180°,X轴对应为0,0°,X轴对应100。如果只考虑半个圆0-180°。是不是可以用 180*X,然后用18000 - 180*X,最后除以一个100就ok啦!然后再看Y轴,如果Y轴输出小于50。那么整体度数加个180,就可以完美和上图对应起来啦。代码实现如下
/*将输入的pos信息 转换为角度信息*/
/*左为180度 上为270度*/
uint16_t ConvPos2Angle(uint16_t pos)
{
uint16_t angle = 0;
uint8_t X = pos;
uint8_tY=pos>>8;
uint16_t Xtemp = 180 * X;
uint16_t Ytemp = 180 * Y;
/*遥感位置中心 直接返回*/
if(X < 55 && X > 45 && Y < 55 && Y > 45)
return RockerNone;
/*Y轴位于上方,就是180°加上X轴的偏移*/
if(Ytemp < 9000)
angle = 18000 + Xtemp;
else /*Y轴位于下方,就是180°减上X轴的偏移*/
{
if(Xtemp > 18000)
angle = 0;
else
angle = 18000 - Xtemp;
}
/*由于遥感数据有误差,需要截取*/
if(angle > 36000)
angle=36000;
return angle / 100;
}
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
按键
+关注
关注
4文章
223浏览量
57568 -
遥感
+关注
关注
0文章
244浏览量
16789 -
Vcc
+关注
关注
2文章
305浏览量
35840
原文标题:还在用按键? 快来试试双轴遥感按键吧!!!
文章出处:【微信号:FPGA之旅,微信公众号:FPGA之旅】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
单轴和双轴测径仪在线缆方面的应用
外径尺寸的闭环控制。单轴测径仪适用于线缆电缆、橡胶、塑料等行业的检测,特别是对于圆形线缆的外径检测。
双轴测径仪的应用
双轴测径仪配备了两组
发表于 08-16 17:48
NanoPi +双轴重力摇杆
介绍JoystickMatrix-Joystick是一个双轴按键摇杆模块,由两个滑动变阻器和一个按键组成。当拨动摇杆时,滑动变阻器的阻值就发生变化,对应的X/Y电压值也随之变化,而用力
发表于 11-13 17:25
遥感
遥感是指非接触的,远距离的探测技术。一般指运用传感器/遥感器对物体的电磁波的辐射、反射特性的探测。[remote sensing] 通过人造地球卫星上的遥测仪器把对地球表面实施感应遥测和资源管理
发表于 03-11 08:03
如何使用单片机接入按键遥感
文章目录1 简介2 主要器件2.1 双轴摇杆模块2.2 电路原理图3 实现效果4 测试代码6 最后1 简介Hi,大家好,这里是丹成学长,今天向大家介绍如何使用单片机接入
发表于 01-19 08:31
【GD32F303红枫派开发板使用手册】第十二讲 ADC-双轴按键摇杆多通道循环采样实验
本实验是通过ADC规则组多通道循环采样方式实现双轴按键摇杆传感器x和y轴电压值的读取,通过本实验主要学习以下内容:
•双
评论