电子说
步骤1:
此操纵杆类似于PlayStation 2控制器上的“模拟”操纵杆。它由两个电位计,每个电位计的值均为10k,一个用于x轴,另一个用于y轴,以及一个用于选择的触觉按钮,按下该按钮可在按下操纵杆时激活。
两个电位器是与一个将水平运动和垂直运动分开的万向节机构连接。在闲置位置时,操纵杆居中,这意味着每个电位计均处于其中心位置或中心位置。回到轴概念,您可以随机选择哪个电位器用于x或y轴。在上面的图片中,您可以看到我选择轴的方式(在此示例中,轴无关紧要。您可以选择任何电位计来尝试草图)。
对于硬件连接,电位计的中间引脚用于模拟数据,另外两个用于电源。哪个引脚连接到5V或GND都无关紧要,它只会稍微影响默认数据值,但无需更改代码。
步骤2:步骤2:Arduino代码
以下是用于校准这种电位计的代码。
/*
日期:------------------------------------ ----- 2015年12月22日标题:---------- JOYSTICK电位计校准
作者:------------------ --- Firas Helou提供------------------------
了解如何使用Arduino Uno校准操纵杆电位器
*/
int defaultData;//在开始
int数据时为默认电位计数据设置一个变量;//可以存储在电位计上从模拟Arduino引脚A0读取的数据
int startTime = 0;//时间变量数据类型定义为整数,因为我们不需要超过10微秒
int TimeGap = 10;//定义时间间隔
int重映射;//重新映射变量以存储来自模拟Arduino引脚A0的重新映射数据
//VOID SETUP()功能
void setup(){
//以默认速率设置串行通信
Serial.begin(9600);
///我们设置时间来定义在模拟Arduino引脚A0上读取的默认值,因为我们有一个居中的操纵杆引脚,因此它的默认值不同于0
if(micros()-startTime》 = TimeGap){//电位计连接到模拟Arduino
defaultData = AnalogRead(A0);
}
}
//无效循环()功能
无效循环(){
//我们将数据值设置为与模拟量读取的值相等Arduino引脚A0
data = AnalogRead(A0);//在这种情况下,开始时读取的默认值为488
if(data //我们必须将在模拟Arduino引脚A0上读取的数据值重新映射为介于0和之间的较小值255
//,但是我们必须从默认值中减去1,因为如果不这样做,//当操纵杆位置居中时,我们将没有默认值0,相反,我们将有一个/为避免浮动问题,我们在1和0之间浮动值,所以我们只需减去-1 remap = map(data,0,defaultData-1,255,0);
}否则if(data》 = defaultData){
//在这一部分,我们不需要减去任何内容
remap = map(data,defaultData,1023,0,255) ;
}
//串行打印我们收到的值
Serial.print(“ Remapped value:”);结果,Serial.println(重映射);
Serial.print(“默认值:”);结果,Serial.println(defaultData);
delay(200);
}
假设我选择了y轴,通过上传代码并打开串行监视器,我们必须看到默认值488就我而言(您可能会得到不同的值)。这是操纵杆的闲置中心位置,因此我们必须对其进行校准以使其开始时看到一个0值而不是488。这就是该草图所在的位置。上图显示了在上载最终草图后收到的结果。
这是我的第一个可指导的教程。希望对您有所帮助。如果您有任何疑问,或者如果您有更好的编码方式,请随时在评论部分中添加您的问题,将其检查出来是一件很不错的事,这将有助于我改善自己。如果您发现可以改进的地方,请在评论中添加它,或给我发送私人消息。对其他人和我一样都会有帮助。
全部0条评论
快来发表一下你的评论吧 !