极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9076|回复: 0

Wireless JoyStick(程序)

[复制链接]
发表于 2012-7-28 12:41:43 | 显示全部楼层 |阅读模式
本帖最后由 highplay86 于 2012-7-28 12:46 编辑
  1. line="1"]/***********************************************************************************************************************************************************
  2. 头文件包�?***********************************************************************************************************************************************************/

  3. /***********************************************************************************************************************************************************
  4. 宏定�?***********************************************************************************************************************************************************/
  5. #define joystick1_up_down 0
  6. #define joystick1_left_right 1
  7. #define joystick1_key 6
  8. #define wheel_left 4

  9. #define joystick2_up_down 2
  10. #define joystick2_left_right 3
  11. #define joystick2_key 7
  12. #define wheel_right 5

  13. /***********************************************************************************************************************************************************
  14. 变量定义
  15. ***********************************************************************************************************************************************************/
  16. struct packet
  17. {
  18.     int _joystick1_up_down;
  19.     int _joystick1_left_right;
  20.     int _left_wheel;
  21.     int _joystick2_up_down;
  22.     int _joystick2_left_right;
  23.     int _right_wheel;
  24.     unsigned int _key_status;
  25. }_packet;

  26. int joystick_balance_value[6]={0};//存储摇杆平衡位置�?
  27. /***********************************************************************************************************************************************************
  28. 获得摇杆平衡位置�?***********************************************************************************************************************************************************/
  29. void Get_Joystick_Balance_Value(void)
  30. {
  31.     unsigned char i;
  32.    
  33.     for(i=0;i<20;i++)
  34.         joystick_balance_value[0]+=analogRead(joystick1_up_down);
  35.     joystick_balance_value[0]/=20;
  36.    
  37.     for(i=0;i<20;i++)
  38.         joystick_balance_value[1]+=analogRead(joystick1_left_right);
  39.     joystick_balance_value[1]/=20;
  40.    
  41.     for(i=0;i<20;i++)
  42.         joystick_balance_value[2]+=analogRead(joystick2_up_down);
  43.     joystick_balance_value[2]/=20;
  44.    
  45.     for(i=0;i<20;i++)
  46.         joystick_balance_value[3]+=analogRead(joystick2_left_right);
  47.     joystick_balance_value[3]/=20;
  48.    
  49.     for(i=0;i<20;i++)
  50.         joystick_balance_value[4]+=analogRead(wheel_left);
  51.     joystick_balance_value[4]/=20;
  52.    
  53.     for(i=0;i<20;i++)
  54.         joystick_balance_value[5]+=analogRead(wheel_right);
  55.     joystick_balance_value[5]/=20;
  56. }

  57. /***********************************************************************************************************************************************************
  58. 获得摇杆当前&#65533;?***********************************************************************************************************************************************************/
  59. void Get_Joystick_Present_Value(void)
  60. {
  61.     unsigned char KEY_temp;
  62.     int temp;
  63.     temp=(analogRead(joystick1_up_down)-joystick_balance_value[0])/20*20;
  64.     _packet._joystick1_up_down=*((unsigned int *)&temp);
  65.    
  66.     temp=(analogRead(joystick1_left_right)-joystick_balance_value[1])/20*20;
  67.     _packet._joystick1_left_right=*((unsigned int *)&temp);
  68.    
  69.     temp=(analogRead(joystick2_up_down)-joystick_balance_value[2])/20*20;
  70.     _packet._joystick2_up_down=*((unsigned int *)&temp);
  71.    
  72.     temp=(analogRead(joystick2_left_right)-joystick_balance_value[3])/20*20;
  73.     _packet._joystick2_left_right=*((unsigned int *)&temp);
  74.    
  75.     temp=(joystick_balance_value[4]-analogRead(wheel_left))/20*20;
  76.     _packet._left_wheel=*((unsigned int *)&temp);
  77.    
  78.     temp=(joystick_balance_value[5]-analogRead(wheel_right))/20*20;
  79.     _packet._right_wheel=*((unsigned int *)&temp);
  80.    
  81.     _packet._key_status=0;
  82.     if(analogRead(joystick1_key)>(0x03ff-500))
  83.         _packet._key_status+=1<<13;
  84.     if(analogRead(joystick2_key)>(0x03ff-0x02ff))//有问&#65533;?        _packet._key_status+=1<<12;
  85.      KEY_temp=PIND;
  86.      KEY_temp>>=2;
  87.      _packet._key_status+=KEY_temp<<6;
  88.      
  89.      KEY_temp=PINB;
  90.      KEY_temp&=0x3f;
  91.      _packet._key_status+=KEY_temp;
  92. }

  93. void setup()
  94. {
  95.     Serial.begin(57600);     
  96.     DDRB&=0xc0;
  97.     DDRD&=0x03;
  98. }

  99. void loop()
  100. {
  101.     unsigned char i;
  102.     unsigned int ADC_temp;
  103.     unsigned char KEY_temp;
  104.     unsigned char XOR_check=0;
  105.     delay(100);
  106.     Get_Joystick_Balance_Value();
  107.    
  108.     while(1)
  109.     {
  110.         XOR_check=0x55^0xaa;
  111.         Get_Joystick_Present_Value();
  112.         for(i=0;i<14;i++)
  113.         {
  114.             //XOR_check^=*((unsigned char *)&_packet+i+1);
  115.             XOR_check^=*((unsigned char *)&_packet+i);
  116.         }
  117.         Serial.print(0x55,BYTE);
  118.         Serial.print(0xaa,BYTE);
  119.         for(i=0;i<14;i++)
  120.         {
  121.             //Serial.print( *((unsigned char *)&_packet+i+1),BYTE);
  122.             Serial.print( *((unsigned char *)&_packet+i),BYTE);
  123.         }
  124.         Serial.print(XOR_check,BYTE);
  125.         delay(200);
  126.     }
  127. }
复制代码
[/code][/code]










有哥们用过这货吗?...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 22:50 , Processed in 0.054715 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表