arduino读取控制手柄

来源:互联网 发布:美国人口老龄化数据 编辑:程序博客网 时间:2024/05/18 00:28

代码如下:

/* 定义串口发送编码 */#define CAR_ADVANCE '1'#define CAR_BACK    '2'#define CAR_LEFT    '3'#define CAR_RIGHT   '4'#define CAR_STOP    '0'/************************************************* Function: void get_rocker(int *buff)Description: 获取摇杆按钮状态(12针) x轴数据(A0针) y轴数据(A1) 并存储于Calls:  digitalRead()        analogRead()Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序) Input: buff 整型指针,获取一个指向3*sizeof(int)大小的存储空间Output: buff[0] 摇杆是否被按下 1-按钮未按下 0-按钮被按下        buff[1] 存储y轴数据 max=2^10-1=1023 min=0        buff[2] 存储x轴数据 max=2^10-1=1023 min=0Return: voidOthers: void*************************************************/  void get_rocker(int *buff){  buff[0]=digitalRead(12);  buff[1]=analogRead(0);  buff[2]=analogRead(1);}void setup() {  Serial.begin(115200);  pinMode(12,INPUT);  digitalWrite(12,HIGH);//上拉}void loop() {  int rocker_data[3];           //用于临时存储摇杆x轴y轴以及switch状态  get_rocker(rocker_data);      //传递存储摇杆状态的数组首地址 //Serial.println(rocker_data[0]);//Serial.println(rocker_data[1]);//Serial.println(rocker_data[2]);   //判断摇杆y轴状态 >这里定义>700表示正推 <600表示反推  if(rocker_data[1]>700)  {    Serial.println(CAR_LEFT);    //Serial.println(rocker_data[1]);  }  else if(rocker_data[1]<600)  {    Serial.println(CAR_RIGHT);  }  //判断摇杆x轴状态 >这里定义>700表示正推 <600表示反推  if(rocker_data[2]>700)  {    Serial.println(CAR_BACK);  }  else if(rocker_data[2]<600)   {    Serial.println(CAR_ADVANCE);  }  //判断摇杆按钮状态 当按钮被按下,读取值为0 则经过逻辑非'!'运算取非,值变为真(0为假),则串口输出数据  if(!rocker_data[0])  {    Serial.println(CAR_STOP);  }  //一般玩家手指反应时间长于100ms,因此定义延时100ms  //建议定义延时是为了避免串口发送保持忙碌,给接收端处理数据时间  //具体延时时间视情况而定  delay(100);}

这里写图片描述

原创粉丝点击