2014-12-1 23:05:14 [显示全部楼层]
19813浏览
查看: 19813|回复: 29

[项目] 蛋痛创意:为了对抗邪恶的喵星人

[复制链接]
    最近,实在是被家里的喵星人欺负的忍无可忍了,决心奋起反击!!
    蛋痛创意:为了对抗邪恶的喵星人图1
    要对抗喵星人的暴政,那当然是请老虎出马!
蛋痛创意:为了对抗邪恶的喵星人图2

    不知道这是什么东东的,请去看《狂怒》---(斑竹,这个不是广告吧?)
    初步的想定是:
    Plan A:用电脑遥控这只车子,实现3个进档,3个退档,3个转向档以及它们的组合而成的48种运动模式,炮塔和炮管可以转动,可以打BB弹驱逐猫咪。硬件部分使用的是成品,主要是实现控制改造。
    Plan B:将老虎接入到家庭WIFI网络,这样,我就可以在安全屋里操作它了,嘿嘿嘿嘿,老虎上加装数传摄像机,包括航向摄像机和并列摄像机,当然,后面那只就是用来开炮滴。
    Plan C:在家里的公共区域安装摄像机,编制视频搜索算法,主动识别喵星人并操作老虎赶来镇压,哈哈哈哈哈哈哈哈......我得意的笑
    目前进度:
    老虎的机械部分已经修理完毕,车体和炮塔都可以动作了。
    切除了老虎体内的电池舱,为改装大电池和控制板做好了准备。
蛋痛创意:为了对抗邪恶的喵星人图3

    uno和298的联调已经完成,目前通过无线串口已经可以发送指令到298的输出了。
蛋痛创意:为了对抗邪恶的喵星人图4

    下一个节点:
    焊接线路,车体组装,预计本周完成。
    一切被喵星人压榨的弟兄,联合起来,发出我们自己的怒吼吧:lol
[size=11.8181819915771px]



wb9999cn  学徒
 楼主|

发表于 2014-12-2 20:23:24

本帖最后由 wb9999cn 于 2014-12-2 20:25 编辑
  1. /***************坦克运行部分控制模型*********************
  2. ******************车体运行命令列表***********************
  3. 命令  前进  后退  左弯  右弯  行进档 转向档 左电机 右电机
  4. 1    接通                    一档          30%   30%
  5. 2    接通                    二档          70%   70%
  6. 3    接通                    三档          100%  100%
  7. 4          接通              一档          -30%  -30%
  8. 5          接通              二档          -70%  -70%
  9. 6          接通              三档          -100% -100%
  10. 7                接通              一档    0%    50%
  11. 8                接通              二档    0%    100%
  12. 9                接通              三档    -50%  50%
  13. 10                     接通        一档    50%   0%
  14. 11                     接通        二档    100%  0%
  15. 12                     接通        三档    50%   -50%
  16. 13  接通    接通    一档  一档  20% 50%
  17. 14  接通    接通    二档  一档  35% 65%
  18. 15  接通    接通    三档  一档  50% 80%
  19. 16  接通    接通    一档  二档  20% 60%
  20. 17  接通    接通    二档  二档  35% 75%
  21. 18  接通    接通    三档  二档  50% 90%
  22. 19  接通    接通    一档  三档  20% 70%
  23. 20  接通    接通    二档  三档  35% 85%
  24. 21  接通    接通    三档  三档  50% 100%
  25. 22  接通      接通  一档  一档  50% 20%
  26. 23  接通      接通  二档  一档  65% 35%
  27. 24  接通      接通  三档  一档  80% 50%
  28. 25  接通      接通  一档  二档  60% 20%
  29. 26  接通      接通  二档  二档  75% 35%
  30. 27  接通      接通  三档  二档  90% 50%
  31. 28  接通      接通  一档  三档  70% 20%
  32. 29  接通      接通  二档  三档  85% 35%
  33. 30  接通      接通  三档  三档  100%  50%
  34. 31    接通  接通    一档  一档  -20%  -50%
  35. 32    接通  接通    二档  一档  -35%  -65%
  36. 33    接通  接通    三档  一档  -50%  -80%
  37. 34    接通  接通    一档  二档  -20%  -60%
  38. 35    接通  接通    二档  二档  -35%  -75%
  39. 36    接通  接通    三档  二档  -50%  -90%
  40. 37    接通  接通    一档  三档  -20%  -70%
  41. 38    接通  接通    二档  三档  -35%  -85%
  42. 39    接通  接通    三档  三档  -50%  -100%
  43. 40    接通    接通  一档  一档  -50%  -20%
  44. 41    接通    接通  二档  一档  -65%  -35%
  45. 42    接通    接通  三档  一档  -80%  -50%
  46. 43    接通    接通  一档  二档  -60%  -20%
  47. 44    接通    接通  二档  二档  -75%  -35%
  48. 45    接通    接通  三档  二档  -90%  -50%
  49. 46    接通    接通  一档  三档  -70%  -20%
  50. 47    接通    接通  二档  三档  -85%  -35%
  51. 48    接通    接通  三档  三档  -100% -50%
  52. 49                              0%    0%    停车
  53. ******************炮塔运行命令列表***********************
  54. 命令  左转  右转  抬高  降低  转速档 方向机  高低机
  55. 51    接通                    一档  40%
  56. 52    接通                    二档  70%
  57. 53    接通                    三档  100%  
  58. 54         接通               一档  -40%  
  59. 55         接通               二档  -70%  
  60. 56         接通               三档  -100%
  61. 57               接通         一档          40%
  62. 58               接通         二档          70%
  63. 59               接通         三档          100%
  64. 60                     接通   一档          -40%
  65. 61                     接通   二档          -70%
  66. 62                     接通   三档          -100%
  67. 63                                     0      0
  68. *****************火炮运行命令列表***********************
  69. 命令  开火档 火炮机
  70. 91    一档   0%
  71. 92    二档   50%
  72. 93    三档   100%
  73. ******************变量声明****************************/
  74. String comdata = "";   //定义字符串
  75. int mark = 0;               //定义接收数据的标识
  76. int numdata = 0;         //定义串口收到的数值
  77. int E1 = 3;   //左驱动电机模拟口
  78. int M1 = 4;   //左驱动电机数字口
  79. int E2 = 5;   //右驱动电机模拟口                     
  80. int M2 = 7;   //右驱动电机数字口
  81. int E3 = 6;   //炮塔方向电机模拟口
  82. int M3 = 8;   //炮塔方向电机数字口
  83. int E4 = 9;   //炮管高低电机模拟口                     
  84. int M4 = 12;  //炮管高低电机数字口
  85. int E5 = 10;  //火炮驱动电机模拟口                       
  86. int M5 = 13;  //火炮驱动电机数字口
  87. int command;   //定义命令
  88. int drive;     //定义驾驶状态要求
  89. int oldDrive;  //定义行驶状态
  90. int turret;     //定义炮塔状态要求
  91. int oldTurret;  //定义炮塔状态
  92. int cannon;     //定义射击状态要求
  93. int oldCannon;  //定义射击状态
  94. /****************程序初始化***********************/
  95. void setup()
  96. {
  97. pinMode(E1,OUTPUT);   //设置电机驱动接口状态
  98. pinMode(M1,OUTPUT);  //设置电机驱动接口状态
  99. pinMode(E2,OUTPUT);  //设置电机驱动接口状态
  100. pinMode(M2,OUTPUT);  //设置电机驱动接口状态
  101. pinMode(E3,OUTPUT);  //设置电机驱动接口状态
  102. pinMode(M3,OUTPUT);  //设置电机驱动接口状态
  103. pinMode(E4,OUTPUT);  //设置电机驱动接口状态
  104. pinMode(M4,OUTPUT);  //设置电机驱动接口状态
  105. pinMode(E5,OUTPUT);  //设置电机驱动接口状态
  106. pinMode(M5,OUTPUT);  //设置电机驱动接口状态
  107. Serial.begin(9600);    //打开串口
  108. }
  109. /****************主程序***********************/
  110. void loop()
  111. {
  112. /********不断循环检测串口缓存,一个个读入字符串*********/
  113.   while (Serial.available() > 0)    //如果有串口数据
  114.   {
  115.    comdata += char(Serial.read());  //读入之后将字符串,串接到comdata上面。
  116.    delay(2);                         //延时
  117.    mark = 1;                         //标记串口读过数据
  118.   }
  119.   
  120. /*****************将字符串转化为数值和命令**********************/  
  121.   if(mark == 1)  //如果接收到数据
  122.   {
  123.      for(int i = 0; i < comdata.length() ; i++)    //以串口读取字符串长度循环,
  124.      {
  125.       numdata = numdata * 10 + (comdata[i] - '0');  //将字符串转化为数值
  126.      }
  127.       command = numdata;   //读取命令
  128.       Serial.print("command=");    //输出命令
  129.       Serial.println(command);      //输出命令内容
  130.       comdata = String("");           //清空comdata  
  131.       numdata = 0;                       //给numdata赋值0
  132.       mark = 0;                             //给mark赋值0
  133.   }
  134. /***************将命令转化为动作*****************/
  135.   switch(command)
  136.   {
  137.    
  138.     /***************车体动作*****************/
  139.    
  140.     case 1:    //命令1   
  141.     drive = command;
  142.     if(drive != oldDrive)
  143.     {
  144.       digitalWrite(M1,LOW);   //
  145.       digitalWrite(M2,LOW);    //   
  146.       analogWrite(E1, 63);   //30%
  147.       analogWrite(E2, 63);   //30%
  148.       oldDrive = drive; //刷新行驶状态
  149.       Serial.print("drive=");
  150.       Serial.println(drive);
  151.     }
  152.     break;
  153.     case 2:
  154.     drive = command;
  155.     if(drive != oldDrive)
  156.     {
  157.       digitalWrite(M1,LOW);   //
  158.       digitalWrite(M2,LOW);    //   
  159.       analogWrite(E1, 127);   //PWM调速
  160.       analogWrite(E2, 127);   //PWM调速
  161.       oldDrive = drive; //刷新行驶状态
  162.       Serial.print("drive=");
  163.       Serial.println(drive);
  164.     }
  165.     break;
  166.     case 3:
  167.     drive = command;
  168.     if(drive != oldDrive)
  169.     {
  170.       digitalWrite(M1,LOW);   //
  171.       digitalWrite(M2,LOW);    //   
  172.       analogWrite(E1, 254);   //PWM调速
  173.       analogWrite(E2, 254);   //PWM调速
  174.       oldDrive = drive; //刷新行驶状态
  175.       Serial.print("drive=");
  176.       Serial.println(drive);
  177.     }
  178.     break;
  179.     case 4:
  180.     drive = command;
  181.     if(drive != oldDrive)
  182.     {
  183.       digitalWrite(M1,HIGH);   //
  184.       digitalWrite(M2,HIGH);    //   
  185.       analogWrite(E1, 63);   //PWM调速
  186.       analogWrite(E2, 63);   //PWM调速
  187.       oldDrive = drive; //刷新行驶状态
  188.       Serial.print("drive=");
  189.       Serial.println(drive);
  190.     }
  191.     break;
  192.     case 5:
  193.     drive = command;
  194.     if(drive != oldDrive)
  195.     {
  196.       digitalWrite(M1,HIGH);   //
  197.       digitalWrite(M2,HIGH);    //   
  198.       analogWrite(E1, 127);   //PWM调速
  199.       analogWrite(E2, 127);   //PWM调速
  200.       oldDrive = drive; //刷新行驶状态
  201.       Serial.print("drive=");
  202.       Serial.println(drive);
  203.     }
  204.     break;
  205.     case 6:
  206.     drive = command;
  207.     if(drive != oldDrive)
  208.     {
  209.       digitalWrite(M1,HIGH);   //
  210.       digitalWrite(M2,HIGH);    //   
  211.       analogWrite(E1, 254);   //PWM调速
  212.       analogWrite(E2, 254);   //PWM调速
  213.       oldDrive = drive; //刷新行驶状态
  214.       Serial.print("drive=");
  215.       Serial.println(drive);
  216.     }
  217.     break;
  218.     case 7:
  219.     drive = command;
  220.     if(drive != oldDrive)
  221.     {
  222.       digitalWrite(M1,LOW);   //
  223.       digitalWrite(M2,LOW);    //   
  224.       analogWrite(E1, 0);   //PWM调速
  225.       analogWrite(E2, 127);   //PWM调速
  226.       oldDrive = drive; //刷新行驶状态
  227.       Serial.print("drive=");
  228.       Serial.println(drive);
  229.     }
  230.     break;
  231.     case 8:
  232.     drive = command;
  233.     if(drive != oldDrive)
  234.     {
  235.       digitalWrite(M1,LOW);   //
  236.       digitalWrite(M2,LOW);    //   
  237.       analogWrite(E1, 0);   //PWM调速
  238.       analogWrite(E2, 254);   //PWM调速
  239.       oldDrive = drive; //刷新行驶状态
  240.       Serial.print("drive=");
  241.       Serial.println(drive);
  242.     }
  243.     break;
  244.     case 9:
  245.     drive = command;
  246.     if(drive != oldDrive)
  247.     {
  248.       digitalWrite(M1,HIGH);   //
  249.       digitalWrite(M2,LOW);    //   
  250.       analogWrite(E1, 127);   //PWM调速
  251.       analogWrite(E2, 127);   //PWM调速
  252.       oldDrive = drive; //刷新行驶状态
  253.       Serial.print("drive=");
  254.       Serial.println(drive);
  255.     }
  256.     break;
  257.     case 10:
  258.     drive = command;
  259.     if(drive != oldDrive)
  260.     {
  261.       digitalWrite(M1,LOW);   //
  262.       digitalWrite(M2,LOW);    //   
  263.       analogWrite(E1, 127);   //PWM调速
  264.       analogWrite(E2, 0);   //PWM调速
  265.       oldDrive = drive; //刷新行驶状态
  266.       Serial.print("drive=");
  267.       Serial.println(drive);
  268.     }
  269.     break;
  270.     case 11:
  271.     drive = command;
  272.     if(drive != oldDrive)
  273.     {
  274.       digitalWrite(M1,LOW);   //
  275.       digitalWrite(M2,LOW);    //   
  276.       analogWrite(E1, 254);   //PWM调速
  277.       analogWrite(E2, 0);   //PWM调速
  278.       oldDrive = drive; //刷新行驶状态
  279.       Serial.print("drive=");
  280.       Serial.println(drive);
  281.     }
  282.     break;
  283.     case 12:
  284.     drive = command;
  285.     if(drive != oldDrive)
  286.     {
  287.       digitalWrite(M1,LOW);   //
  288.       digitalWrite(M2,HIGH);    //   
  289.       analogWrite(E1, 127);   //PWM调速
  290.       analogWrite(E2, 127);   //PWM调速
  291.       oldDrive = drive; //刷新行驶状态
  292.       Serial.print("drive=");
  293.       Serial.println(drive);
  294.     }
  295.     break;
  296.     case 13:
  297.     drive = command;
  298.     if(drive != oldDrive)
  299.     {
  300.       digitalWrite(M1,LOW);   //
  301.       digitalWrite(M2,LOW);    //   
  302.       analogWrite(E1, 50);   //PWM调速
  303.       analogWrite(E2, 127);   //PWM调速
  304.       oldDrive = drive; //刷新行驶状态
  305.       Serial.print("drive=");
  306.       Serial.println(drive);
  307.     }
  308.     break;
  309. case 14:
  310.     drive = command;
  311.     if(drive != oldDrive)
  312.     {
  313.       digitalWrite(M1,LOW);   //
  314.       digitalWrite(M2,LOW);    //   
  315.       analogWrite(E1, 89);   //PWM调速
  316.       analogWrite(E2, 165);   //PWM调速
  317.       oldDrive = drive; //刷新行驶状态
  318.       Serial.print("drive=");
  319.       Serial.println(drive);
  320.     }
  321.     break;
  322. case 15:
  323.     drive = command;
  324.     if(drive != oldDrive)
  325.     {
  326.       digitalWrite(M1,LOW);   //
  327.       digitalWrite(M2,LOW);    //   
  328.       analogWrite(E1, 127);   //PWM调速
  329.       analogWrite(E2, 204);   //PWM调速
  330.       oldDrive = drive; //刷新行驶状态
  331.       Serial.print("drive=");
  332.       Serial.println(drive);
  333.     }
  334.     break;
  335. case 16:
  336.     drive = command;
  337.     if(drive != oldDrive)
  338.     {
  339.       digitalWrite(M1,LOW);   //
  340.       digitalWrite(M2,LOW);    //   
  341.       analogWrite(E1, 50);   //PWM调速
  342.       analogWrite(E2, 152);   //PWM调速
  343.       oldDrive = drive; //刷新行驶状态
  344.       Serial.print("drive=");
  345.       Serial.println(drive);
  346.     }
  347.     break;
  348. case 17:
  349.     drive = command;
  350.     if(drive != oldDrive)
  351.     {
  352.       digitalWrite(M1,LOW);   //
  353.       digitalWrite(M2,LOW);    //   
  354.       analogWrite(E1, 89);   //PWM调速
  355.       analogWrite(E2, 192);   //PWM调速
  356.       oldDrive = drive; //刷新行驶状态
  357.       Serial.print("drive=");
  358.       Serial.println(drive);
  359.     }
  360.     break;
  361. case 18:
  362.     drive = command;
  363.     if(drive != oldDrive)
  364.     {
  365.       digitalWrite(M1,LOW);   //
  366.       digitalWrite(M2,LOW);    //   
  367.       analogWrite(E1, 127);   //PWM调速
  368.       analogWrite(E2, 229);   //PWM调速
  369.       oldDrive = drive; //刷新行驶状态
  370.       Serial.print("drive=");
  371.       Serial.println(drive);
  372.     }
  373.     break;
  374. case 19:
  375.     drive = command;
  376.     if(drive != oldDrive)
  377.     {
  378.       digitalWrite(M1,LOW);   //
  379.       digitalWrite(M2,LOW);    //   
  380.       analogWrite(E1, 50);   //PWM调速
  381.       analogWrite(E2, 178);   //PWM调速
  382.       oldDrive = drive; //刷新行驶状态
  383.       Serial.print("drive=");
  384.       Serial.println(drive);
  385.     }
  386.     break;
  387. case 20:
  388.     drive = command;
  389.     if(drive != oldDrive)
  390.     {
  391.       digitalWrite(M1,LOW);   //
  392.       digitalWrite(M2,LOW);    //   
  393.       analogWrite(E1, 89);   //PWM调速
  394.       analogWrite(E2, 216);   //PWM调速
  395.       oldDrive = drive; //刷新行驶状态
  396.       Serial.print("drive=");
  397.       Serial.println(drive);
  398.     }
  399.     break;
  400. case 21:
  401.     drive = command;
  402.     if(drive != oldDrive)
  403.     {
  404.       digitalWrite(M1,LOW);   //
  405.       digitalWrite(M2,LOW);    //   
  406.       analogWrite(E1, 127);   //PWM调速
  407.       analogWrite(E2, 255);   //PWM调速
  408.       oldDrive = drive; //刷新行驶状态
  409.       Serial.print("drive=");
  410.       Serial.println(drive);
  411.     }
  412.     break;
  413. case 22:
  414.     drive = command;
  415.     if(drive != oldDrive)
  416.     {
  417.       digitalWrite(M1,LOW);   //
  418.       digitalWrite(M2,LOW);    //   
  419.       analogWrite(E1, 127);   //PWM调速
  420.       analogWrite(E2, 50);   //PWM调速
  421.       oldDrive = drive; //刷新行驶状态
  422.       Serial.print("drive=");
  423.       Serial.println(drive);
  424.     }
  425.     break;
  426. case 23:
  427.     drive = command;
  428.     if(drive != oldDrive)
  429.     {
  430.       digitalWrite(M1,LOW);   //
  431.       digitalWrite(M2,LOW);    //   
  432.       analogWrite(E1, 165);   //PWM调速
  433.       analogWrite(E2, 89);   //PWM调速
  434.       oldDrive = drive; //刷新行驶状态
  435.       Serial.print("drive=");
  436.       Serial.println(drive);
  437.     }
  438.     break;
  439. case 24:
  440.     drive = command;
  441.     if(drive != oldDrive)
  442.     {
  443.       digitalWrite(M1,LOW);   //
  444.       digitalWrite(M2,LOW);    //   
  445.       analogWrite(E1, 204);   //PWM调速
  446.       analogWrite(E2, 127);   //PWM调速
  447.       oldDrive = drive; //刷新行驶状态
  448.       Serial.print("drive=");
  449.       Serial.println(drive);
  450.     }
  451.     break;
  452. case 25:
  453.     drive = command;
  454.     if(drive != oldDrive)
  455.     {
  456.       digitalWrite(M1,LOW);   //
  457.       digitalWrite(M2,LOW);    //   
  458.       analogWrite(E1, 152);   //PWM调速
  459.       analogWrite(E2, 50);   //PWM调速
  460.       oldDrive = drive; //刷新行驶状态
  461.       Serial.print("drive=");
  462.       Serial.println(drive);
  463.     }
  464.     break;
  465. case 26:
  466.     drive = command;
  467.     if(drive != oldDrive)
  468.     {
  469.       digitalWrite(M1,LOW);   //
  470.       digitalWrite(M2,LOW);    //   
  471.       analogWrite(E1, 192);   //PWM调速
  472.       analogWrite(E2, 89);   //PWM调速
  473.       oldDrive = drive; //刷新行驶状态
  474.       Serial.print("drive=");
  475.       Serial.println(drive);
  476.     }
  477.     break;
  478. case 27:
  479.     drive = command;
  480.     if(drive != oldDrive)
  481.     {
  482.       digitalWrite(M1,LOW);   //
  483.       digitalWrite(M2,LOW);    //   
  484.       analogWrite(E1, 229);   //PWM调速
  485.       analogWrite(E2, 127);   //PWM调速
  486.       oldDrive = drive; //刷新行驶状态
  487.       Serial.print("drive=");
  488.       Serial.println(drive);
  489.     }
  490.     break;
  491. case 28:
  492.     drive = command;
  493.     if(drive != oldDrive)
  494.     {
  495.       digitalWrite(M1,LOW);   //
  496.       digitalWrite(M2,LOW);    //   
  497.       analogWrite(E1, 178);   //PWM调速
  498.       analogWrite(E2, 50);   //PWM调速
  499.       oldDrive = drive; //刷新行驶状态
  500.       Serial.print("drive=");
  501.       Serial.println(drive);
  502.     }
  503.     break;
  504. case 29:
  505.     drive = command;
  506.     if(drive != oldDrive)
  507.     {
  508.       digitalWrite(M1,LOW);   //
  509.       digitalWrite(M2,LOW);    //   
  510.       analogWrite(E1, 216);   //PWM调速
  511.       analogWrite(E2, 89);   //PWM调速
  512.       oldDrive = drive; //刷新行驶状态
  513.       Serial.print("drive=");
  514.       Serial.println(drive);
  515.     }
  516.     break;
  517. case 30:
  518.     drive = command;
  519.     if(drive != oldDrive)
  520.     {
  521.       digitalWrite(M1,LOW);   //
  522.       digitalWrite(M2,LOW);    //   
  523.       analogWrite(E1, 255);   //PWM调速
  524.       analogWrite(E2, 127);   //PWM调速
  525.       oldDrive = drive; //刷新行驶状态
  526.       Serial.print("drive=");
  527.       Serial.println(drive);
  528.     }
  529.     break;
  530. case 31:
  531.     drive = command;
  532.     if(drive != oldDrive)
  533.     {
  534.       digitalWrite(M1,HIGH);   //
  535.       digitalWrite(M2,HIGH);    //   
  536.       analogWrite(E1, 50);   //PWM调速
  537.       analogWrite(E2, 127);   //PWM调速
  538.       oldDrive = drive; //刷新行驶状态
  539.       Serial.print("drive=");
  540.       Serial.println(drive);
  541.     }
  542.     break;
  543. case 32:
  544.     drive = command;
  545.     if(drive != oldDrive)
  546.     {
  547.       digitalWrite(M1,HIGH);   //
  548.       digitalWrite(M2,HIGH);    //   
  549.       analogWrite(E1, 89);   //PWM调速
  550.       analogWrite(E2, 165);   //PWM调速
  551.       oldDrive = drive; //刷新行驶状态
  552.       Serial.print("drive=");
  553.       Serial.println(drive);
  554.     }
  555.     break;
  556. case 33:
  557.     drive = command;
  558.     if(drive != oldDrive)
  559.     {
  560.       digitalWrite(M1,HIGH);   //
  561.       digitalWrite(M2,HIGH);    //   
  562.       analogWrite(E1, 127);   //PWM调速
  563.       analogWrite(E2, 204);   //PWM调速
  564.       oldDrive = drive; //刷新行驶状态
  565.       Serial.print("drive=");
  566.       Serial.println(drive);
  567.     }
  568.     break;
  569. case 34:
  570.     drive = command;
  571.     if(drive != oldDrive)
  572.     {
  573.       digitalWrite(M1,HIGH);   //
  574.       digitalWrite(M2,HIGH);    //   
  575.       analogWrite(E1, 50);   //PWM调速
  576.       analogWrite(E2, 152);   //PWM调速
  577.       oldDrive = drive; //刷新行驶状态
  578.       Serial.print("drive=");
  579.       Serial.println(drive);
  580.     }
  581.     break;
  582. case 35:
  583.     drive = command;
  584.     if(drive != oldDrive)
  585.     {
  586.       digitalWrite(M1,HIGH);   //
  587.       digitalWrite(M2,HIGH);    //   
  588.       analogWrite(E1, 89);   //PWM调速
  589.       analogWrite(E2, 192);   //PWM调速
  590.       oldDrive = drive; //刷新行驶状态
  591.       Serial.print("drive=");
  592.       Serial.println(drive);
  593.     }
  594.     break;
  595. case 36:
  596.     drive = command;
  597.     if(drive != oldDrive)
  598.     {
  599.       digitalWrite(M1,HIGH);   //
  600.       digitalWrite(M2,HIGH);    //   
  601.       analogWrite(E1, 127);   //PWM调速
  602.       analogWrite(E2, 229);   //PWM调速
  603.       oldDrive = drive; //刷新行驶状态
  604.       Serial.print("drive=");
  605.       Serial.println(drive);
  606.     }
  607.     break;
  608. case 37:
  609.     drive = command;
  610.     if(drive != oldDrive)
  611.     {
  612.       digitalWrite(M1,HIGH);   //
  613.       digitalWrite(M2,HIGH);    //   
  614.       analogWrite(E1, 50);   //PWM调速
  615.       analogWrite(E2, 178);   //PWM调速
  616.       oldDrive = drive; //刷新行驶状态
  617.       Serial.print("drive=");
  618.       Serial.println(drive);
  619.     }
  620.     break;
  621. case 38:
  622.     drive = command;
  623.     if(drive != oldDrive)
  624.     {
  625.       digitalWrite(M1,HIGH);   //
  626.       digitalWrite(M2,HIGH);    //   
  627.       analogWrite(E1, 89);   //PWM调速
  628.       analogWrite(E2, 216);   //PWM调速
  629.       oldDrive = drive; //刷新行驶状态
  630.       Serial.print("drive=");
  631.       Serial.println(drive);
  632.     }
  633.     break;
  634. case 39:
  635.     drive = command;
  636.     if(drive != oldDrive)
  637.     {
  638.       digitalWrite(M1,HIGH);   //
  639.       digitalWrite(M2,HIGH);    //   
  640.       analogWrite(E1, 127);   //PWM调速
  641.       analogWrite(E2, 255);   //PWM调速
  642.       oldDrive = drive; //刷新行驶状态
  643.       Serial.print("drive=");
  644.       Serial.println(drive);
  645.     }
  646.     break;
  647. case 40:
  648.     drive = command;
  649.     if(drive != oldDrive)
  650.     {
  651.       digitalWrite(M1,HIGH);   //
  652.       digitalWrite(M2,HIGH);    //   
  653.       analogWrite(E1, 127);   //PWM调速
  654.       analogWrite(E2, 50);   //PWM调速
  655.       oldDrive = drive; //刷新行驶状态
  656.       Serial.print("drive=");
  657.       Serial.println(drive);
  658.     }
  659.     break;
  660. case 41:
  661.     drive = command;
  662.     if(drive != oldDrive)
  663.     {
  664.       digitalWrite(M1,HIGH);   //
  665.       digitalWrite(M2,HIGH);    //   
  666.       analogWrite(E1, 165);   //PWM调速
  667.       analogWrite(E2, 89);   //PWM调速
  668.       oldDrive = drive; //刷新行驶状态
  669.       Serial.print("drive=");
  670.       Serial.println(drive);
  671.     }
  672.     break;
  673. case 42:
  674.     drive = command;
  675.     if(drive != oldDrive)
  676.     {
  677.       digitalWrite(M1,HIGH);   //
  678.       digitalWrite(M2,HIGH);    //   
  679.       analogWrite(E1, 204);   //PWM调速
  680.       analogWrite(E2, 127);   //PWM调速
  681.       oldDrive = drive; //刷新行驶状态
  682.       Serial.print("drive=");
  683.       Serial.println(drive);
  684.     }
  685.     break;
  686. case 43:
  687.     drive = command;
  688.     if(drive != oldDrive)
  689.     {
  690.       digitalWrite(M1,HIGH);   //
  691.       digitalWrite(M2,HIGH);    //   
  692.       analogWrite(E1, 152);   //PWM调速
  693.       analogWrite(E2, 50);   //PWM调速
  694.       oldDrive = drive; //刷新行驶状态
  695.       Serial.print("drive=");
  696.       Serial.println(drive);
  697.     }
  698.     break;
  699. case 44:
  700.     drive = command;
  701.     if(drive != oldDrive)
  702.     {
  703.       digitalWrite(M1,HIGH);   //
  704.       digitalWrite(M2,HIGH);    //   
  705.       analogWrite(E1, 192);   //PWM调速
  706.       analogWrite(E2, 89);   //PWM调速
  707.       oldDrive = drive; //刷新行驶状态
  708.       Serial.print("drive=");
  709.       Serial.println(drive);
  710.     }
  711.     break;
  712. case 45:
  713.     drive = command;
  714.     if(drive != oldDrive)
  715.     {
  716.       digitalWrite(M1,HIGH);   //
  717.       digitalWrite(M2,HIGH);    //   
  718.       analogWrite(E1, 229);   //PWM调速
  719.       analogWrite(E2, 127);   //PWM调速
  720.       oldDrive = drive; //刷新行驶状态
  721.       Serial.print("drive=");
  722.       Serial.println(drive);
  723.     }
  724.     break;
  725. case 46:
  726.     drive = command;
  727.     if(drive != oldDrive)
  728.     {
  729.       digitalWrite(M1,HIGH);   //
  730.       digitalWrite(M2,HIGH);    //   
  731.       analogWrite(E1, 178);   //PWM调速
  732.       analogWrite(E2, 50);   //PWM调速
  733.       oldDrive = drive; //刷新行驶状态
  734.       Serial.print("drive=");
  735.       Serial.println(drive);
  736.     }
  737.     break;
  738. case 47:
  739.     drive = command;
  740.     if(drive != oldDrive)
  741.     {
  742.       digitalWrite(M1,HIGH);   //
  743.       digitalWrite(M2,HIGH);    //   
  744.       analogWrite(E1, 216);   //PWM调速
  745.       analogWrite(E2, 89);   //PWM调速
  746.       oldDrive = drive; //刷新行驶状态
  747.       Serial.print("drive=");
  748.       Serial.println(drive);
  749.     }
  750.     break;
  751. case 48:
  752.     drive = command;
  753.     if(drive != oldDrive)
  754.     {
  755.       digitalWrite(M1,HIGH);   //
  756.       digitalWrite(M2,HIGH);    //   
  757.       analogWrite(E1, 255);   //PWM调速
  758.       analogWrite(E2, 127);   //PWM调速
  759.       oldDrive = drive; //刷新行驶状态
  760.       Serial.print("drive=");
  761.       Serial.println(drive);
  762.     }
  763.     break;
  764. /*******??????????????????????????????????***********/   
  765.     case 49:
  766.     drive = command;
  767.     if(drive != oldDrive)
  768.     {
  769.       digitalWrite(M1,LOW);   //
  770.       digitalWrite(M2,LOW);    //   
  771.       analogWrite(E1, 0);   //PWM调速
  772.       analogWrite(E2, 0);   //PWM调速
  773.       oldDrive = drive; //刷新行驶状态
  774.       Serial.print("drive=");
  775.       Serial.println(drive);
  776.     }
  777.     break;
  778.    
  779.     /***************炮塔动作*******************/
  780.    
  781.     case 51:
  782.     turret = command;
  783.     if(turret != oldTurret)
  784.     {
  785.       digitalWrite(M3,LOW);   //
  786.       analogWrite(E3, 63);   //PWM调速
  787.       oldTurret = turret; //刷新行驶状态
  788.       Serial.print("turret=");
  789.       Serial.println(turret);
  790.     }
  791.     break;
  792.     case 52:
  793.     turret = command;
  794.     if(turret != oldTurret)
  795.     {
  796.       digitalWrite(M3,LOW);   //
  797.       analogWrite(E3, 127);   //PWM调速
  798.       oldTurret = turret; //刷新行驶状态
  799.       Serial.print("turret=");
  800.       Serial.println(turret);
  801.     }
  802.     break;
  803.     case 53:
  804.     turret = command;
  805.     if(turret != oldTurret)
  806.     {
  807.       digitalWrite(M3,LOW);   //
  808.       analogWrite(E3, 254);   //PWM调速
  809.       oldTurret = turret; //刷新行驶状态
  810.       Serial.print("turret=");
  811.       Serial.println(turret);
  812.     }
  813.     break;
  814.     case 54:
  815.     turret = command;
  816.     if(turret != oldTurret)
  817.     {
  818.       digitalWrite(M3,HIGH);   //
  819.       analogWrite(E3, 63);   //PWM调速
  820.       oldTurret = turret; //刷新行驶状态
  821.       Serial.print("turret=");
  822.       Serial.println(turret);
  823.     }
  824.     break;
  825.     case 55:
  826.     turret = command;
  827.     if(turret != oldTurret)
  828.     {
  829.       digitalWrite(M3,HIGH);   //
  830.       analogWrite(E3, 127);   //PWM调速
  831.       oldTurret = turret; //刷新行驶状态
  832.       Serial.print("turret=");
  833.       Serial.println(turret);
  834.     }
  835.     break;
  836.     case 56:
  837.     turret = command;
  838.     if(turret != oldTurret)
  839.     {
  840.       digitalWrite(M3,HIGH);   //
  841.       analogWrite(E3, 254);   //PWM调速
  842.       oldTurret = turret; //刷新行驶状态
  843.       Serial.print("turret=");
  844.       Serial.println(turret);
  845.     }
  846.     break;
  847.     case 57:
  848.     turret = command;
  849.     if(turret != oldTurret)
  850.     {
  851.       digitalWrite(M4,LOW);   //
  852.       analogWrite(E4, 63);   //PWM调速
  853.       oldTurret = turret; //刷新行驶状态
  854.       Serial.print("turret=");
  855.       Serial.println(turret);
  856.     }
  857.     break;
  858.     case 58:
  859.     turret = command;
  860.     if(turret != oldTurret)
  861.     {
  862.       digitalWrite(M4,LOW);   //
  863.       analogWrite(E4, 127);   //PWM调速
  864.       oldTurret = turret; //刷新行驶状态
  865.       Serial.print("turret=");
  866.       Serial.println(turret);
  867.     }
  868.     break;
  869.     case 59:
  870.     turret = command;
  871.     if(turret != oldTurret)
  872.     {
  873.       digitalWrite(M4,LOW);   //
  874.       analogWrite(E4, 254);   //PWM调速
  875.       oldTurret = turret; //刷新行驶状态
  876.       Serial.print("turret=");
  877.       Serial.println(turret);
  878.     }
  879.     break;
  880.     case 60:
  881.     turret = command;
  882.     if(turret != oldTurret)
  883.     {
  884.       digitalWrite(M4,HIGH);   //
  885.       analogWrite(E4, 63);   //PWM调速
  886.       oldTurret = turret; //刷新行驶状态
  887.       Serial.print("turret=");
  888.       Serial.println(turret);
  889.     }
  890.     break;
  891.     case 61:
  892.     turret = command;
  893.     if(turret != oldTurret)
  894.     {
  895.       digitalWrite(M4,HIGH);   //
  896.       analogWrite(E4, 127);   //PWM调速
  897.       oldTurret = turret; //刷新行驶状态
  898.       Serial.print("turret=");
  899.       Serial.println(turret);
  900.     }
  901.     break;
  902.     case 62:
  903.     turret = command;
  904.     if(turret != oldTurret)
  905.     {
  906.       digitalWrite(M4,HIGH);   //
  907.       analogWrite(E4, 254);   //PWM调速
  908.       oldTurret = turret; //刷新行驶状态
  909.       Serial.print("turret=");
  910.       Serial.println(turret);
  911.     }
  912.     break;
  913.     case 63:
  914.     turret = command;
  915.     if(turret != oldTurret)
  916.     {
  917.       digitalWrite(M3,LOW);   //
  918.       digitalWrite(M4,LOW);   //
  919.       analogWrite(E3, 0);   //PWM调速
  920.       analogWrite(E4, 0);   //PWM调速
  921.       oldTurret = turret; //刷新行驶状态
  922.       Serial.print("turret=");
  923.       Serial.println(turret);
  924.     }
  925.     break;
  926.    
  927.        /***************射击动作*******************/
  928.     case 91:
  929.     cannon = command;
  930.     if(cannon != oldCannon)
  931.     {
  932.       digitalWrite(M5,LOW);   //
  933.       analogWrite(E5, 0);   //PWM调速
  934.       oldCannon = cannon; //刷新行驶状态
  935.       Serial.print("cannon=");
  936.       Serial.println(cannon);
  937.     }
  938.     break;
  939.     case 92:
  940.     cannon = command;
  941.     if(cannon != oldCannon)
  942.     {
  943.       digitalWrite(M5,LOW);   //
  944.       analogWrite(E5, 127);   //PWM调速
  945.       oldCannon = cannon; //刷新行驶状态
  946.       Serial.print("cannon=");
  947.       Serial.println(cannon);
  948.     }
  949.     break;
  950.     case 93:
  951.     cannon = command;
  952.     if(cannon != oldCannon)
  953.     {
  954.       digitalWrite(M5,LOW);   //
  955.       analogWrite(E5, 254);   //PWM调速
  956.       oldCannon = cannon; //刷新行驶状态
  957.       Serial.print("cannon=");
  958.       Serial.println(cannon);
  959.     }
  960.     break;
  961.   }
  962. }
复制代码

车体行动部分的代码基本上写完了,不过,由于第一次写Arduino的程序,因此感觉非常累赘,估计有很多技巧和函数可以大幅度精简代码。先不管了,还是发上来供大家批判,如果有大神能指点一下精简代码的思路,不胜感激。
回复

使用道具 举报

wb9999cn  学徒
 楼主|

发表于 2014-12-2 20:32:11

喵王 发表于 2014-12-2 10:21
视频传输你打算怎么实现?而且是两路视频传输哦。

是哦传输全部用WIFI。

实际上,虽然目前我用的是APC220数传,但是最终我也会将坦克的控制部分放进WIFI网络的。我要实现的目标是非接触战争啊:lol

我在关上门的主卧室里面操作坦克去与占领了客厅沙发的喵星人战斗。

最终的目标是在客厅安装摄像机,通过动态目标分离的方式,直接引导坦克作战,可以完全无人操作。当然,还是要人在回路中,以防失控。这一步-----可以理解,还很远。
回复

使用道具 举报

wb9999cn  学徒
 楼主|

发表于 2014-12-4 23:48:06

本帖最后由 wb9999cn 于 2014-12-4 23:50 编辑

进度汇报:

    (1)坦克底甲板制作完成,材料为洞洞板,覆盖了整个坦克底部,目的是增加底板强度,bing 电池和电路板提供安装支撑。

    (2)电池和电路板固定方式已经确定,并进行了假组合,以便确认没有与坦克炮塔和火炮之间的干涉可能。原来考虑的三块电机驱动板层叠的方式放弃了,高度不够,只好在电池上面加了一层电路板。

蛋痛创意:为了对抗邪恶的喵星人图1


    下步工作安排:周末完成焊接。:victory:
回复

使用道具 举报

Eric  初级技神

发表于 2014-12-1 23:13:57

哈哈哈,坦克相当给力啊~让喵星人更惧怕的是在你的坦克上面加一个MP3模块,然后模拟各种狗叫,哈哈哈,喵星人一定会毛孔数起来滴,哈哈哈哈
回复

使用道具 举报

wb9999cn  学徒
 楼主|

发表于 2014-12-1 23:20:20

俺家有汪星人的,也是喵星人的欺压对象啊.......
回复

使用道具 举报

Ricky  NPC

发表于 2014-12-2 00:09:16

有个建议,在tank上装个激光笔,然后能自由转动,照到地上,保证猫星人抓狂。。完全抓狂。哈哈
回复

使用道具 举报

michael  中级技师

发表于 2014-12-2 09:37:57

可以做个左右摇晃的东西,这样就可以引诱喵星人过来,然后再吓尿他
回复

使用道具 举报

喵王  初级技匠

发表于 2014-12-2 10:21:56

视频传输你打算怎么实现?而且是两路视频传输哦。
回复

使用道具 举报

Rockets  NPC

发表于 2014-12-2 15:34:18

用wifi摄像头实现视频传输。
回复

使用道具 举报

冰渕  中级技师

发表于 2014-12-2 17:24:31

时代变了,喵星人称霸,汪星人直接被鄙视了:L:L:L
回复

使用道具 举报

Youyou  初级技匠

发表于 2014-12-2 22:53:54

楼主,喵星人的左眼已经发绿,耳朵竖的很直,明显是要和你挑战了。
回复

使用道具 举报

heinau  高级技匠

发表于 2014-12-3 10:41:34

哈哈哈哈哈哈笑尿
喵星人这么萌你们不要黑它~~~
楼主家居然还有汪星人,每天的生活一定很嗨森(鸡飞狗跳神马的

如果能在坦克上装摄像头,第一视角看一定很销魂哈哈哈~
回复

使用道具 举报

林子大了  中级技师

发表于 2014-12-4 14:08:50

这个。。。。。
回复

使用道具 举报

mcholen  高级技师

发表于 2014-12-4 17:33:34

吓猫焉用坦克...
回复

使用道具 举报

fangrong  中级技师

发表于 2014-12-4 23:41:18

楼主,猫需要御的。要是我这的猫,你的坦克直接被啃碎了
回复

使用道具 举报

wb9999cn  学徒
 楼主|

发表于 2014-12-4 23:52:09

fangrong 发表于 2014-12-4 23:41
楼主,猫需要御的。要是我这的猫,你的坦克直接被啃碎了

这个......咱暂时不考虑与山猫、豹猫之类的喵星人中的战斗猫作战的问题。:L
回复

使用道具 举报

wanglei830205  初级技师

发表于 2014-12-7 10:06:04

这个坦克确实挺有创意的,楼主的武器装备看来花了不少大洋啊
回复

使用道具 举报

wb9999cn  学徒
 楼主|

发表于 2014-12-7 22:30:13

最新进度:车体已经全部搞定,目前已经可以通过串口调试器来操作它了。

发现的最新问题是电动机扭矩不够,低档下几乎没有行动能力。是不是要换电机了....琢磨算计口袋中的银票

测试战斗表明,猫咪对这个新出现的地面不明爬行物颇有些恐惧.....尤其是在它发射BB弹的时候,嘿嘿,一溜烟跑回自己小窝里躲起来了。
回复

使用道具 举报

Ash  管理员

发表于 2014-12-9 17:04:26

wb9999cn 发表于 2014-12-7 22:30
最新进度:车体已经全部搞定,目前已经可以通过串口调试器来操作它了。

发现的最新问题是电动机扭矩不够, ...

你让可怜的喵星人幼小的心灵受到了惊吓啊 从此抑郁了怎么办..
回复

使用道具 举报

kevinjeng  见习技师

发表于 2014-12-9 20:40:07

这工程量不小啊
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail