久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 使用單個arduino nano控制使用麥克納姆輪小車的簡易源碼方案 [打印本頁]

作者: leotheknight    時間: 2018-9-19 18:21
標(biāo)題: 使用單個arduino nano控制使用麥克納姆輪小車的簡易源碼方案
之前項目做了個簡易的移動平臺方案,圖方便就使用了arduino,然后一個兩軸手柄控制方向,帶動四個兩相步進電機 算是個比較偷懶的解決方案了,但是比較直接明了

arduino源程序如下:
  1. #include <math.h>
  2. #include <Stepper.h>

  3. //Stepper control
  4. #define LF 6
  5. #define RF 7
  6. #define RR 8

  7. //right and left button
  8. const int leftBtn = A3;
  9. const int rightBtn = A2;
  10. //Joystick
  11. const int xAxis = A0;
  12. const int yAxis = A1;
  13. int range = 10;

  14. //Initialise the stepper motors
  15. const int stepsPeRFevolution = 1600;  //number of steps per revolution
  16. Stepper RightFront(stepsPeRFevolution, 2,3,4,5);

  17. void setup() {
  18.   Serial.begin(9600);
  19.   RightFront.setSpeed(0);

  20.   pinMode(rightBtn, INPUT);
  21.   pinMode(leftBtn, INPUT);

  22.   pinMode(xAxis, INPUT);
  23.   pinMode(yAxis, INPUT);

  24.   pinMode(LF, OUTPUT);
  25.   pinMode(RF, OUTPUT);
  26.   pinMode(RR, OUTPUT);
  27.   digitalWrite(rightBtn, HIGH);
  28.   digitalWrite(leftBtn, HIGH);
  29. }

  30. void loop() {
  31.   int xVal = map(analogRead(xAxis), 0, 1023, 0, range);
  32.   int yVal = map(analogRead(yAxis), 0, 1023, 0, range);
  33.   int turnright = digitalRead(rightBtn);
  34.   int turnleft = digitalRead(leftBtn);
  35.   Serial.println(xVal);
  36.   Serial.println(yVal);
  37.   Serial.println(turnright);
  38.   Serial.println(turnleft);
  39.   if (turnright == HIGH)
  40.   {
  41.     RightFront.setSpeed(5);
  42.     moveCW(10);   //clockwise rightsideBackwards, leftsideForwards
  43.   }
  44.   else if (turnleft == HIGH)
  45.   {
  46.     RightFront.setSpeed(5);
  47.     moveACW(10);   //anticlockwise leftsideBackwards,rightsideForwards
  48.   }
  49.   else if (turnright == LOW && turnleft == LOW)
  50.   {
  51.     if (xVal == 5)
  52.     {
  53.         if (yVal == 0) {
  54.           RightFront.setSpeed(20);
  55.           goBackward(10);
  56.         }
  57.         else if (yVal == 9)
  58.         {
  59.           RightFront.setSpeed(20);
  60.           goForward(10);
  61.         } else {
  62.           if (yVal >= 7 ) {
  63.             RightFront.setSpeed(10);
  64.             goForward(10);
  65.           }
  66.           else if (yVal <= 3) {
  67.             RightFront.setSpeed(10);
  68.             goBackward(10);
  69.           }
  70.         }
  71.     }
  72.     else if (yVal == 5)
  73.     {

  74.         if (xVal == 0) {
  75.           RightFront.setSpeed(20);
  76.           moveRight(10);
  77.         }
  78.         else if (xVal == 9)
  79.         {
  80.           RightFront.setSpeed(20);
  81.           moveLeft(10);
  82.         } else {
  83.           if (xVal >= 6 ) {
  84.             RightFront.setSpeed(10);
  85.             moveLeft(10);
  86.           }
  87.           else if (xVal <= 4) {
  88.             RightFront.setSpeed(10);
  89.             moveRight(10);
  90.           }
  91.         }
  92.     }
  93.   }
  94. }

  95. //Methods for stepper movement
  96. void goForward(int mSteps) {
  97.   RightFront.step(mSteps);
  98.   digitalWrite(LF, LOW);
  99.   digitalWrite(RF, HIGH);
  100.   digitalWrite(RR, HIGH);
  101. }

  102. void goBackward(int mSteps) {
  103.   RightFront.step(-mSteps);
  104.   digitalWrite(LF, HIGH);
  105.   digitalWrite(RF, LOW);
  106.   digitalWrite(RR, LOW);
  107. }

  108. void moveRight(int mSteps) {
  109.   RightFront.step(-mSteps);
  110.   digitalWrite(LF, LOW);
  111.   digitalWrite(RF, LOW);
  112.   digitalWrite(RR, HIGH);
  113. }

  114. void moveLeft(int mSteps) {
  115.   RightFront.step(mSteps);
  116.   
  117.   digitalWrite(LF, HIGH);
  118.   digitalWrite(RF, HIGH);
  119.   digitalWrite(RR, LOW);
  120. }

  121. void moveACW(int mSteps) {
  122.   RightFront.step(-mSteps);
  123.   digitalWrite(LF, HIGH);
  124.   digitalWrite(RF, HIGH);
  125.   digitalWrite(RR, HIGH);
  126. }

  127. void moveCW(int mSteps) {
  128.   RightFront.step(mSteps);
  129.   digitalWrite(LF, LOW);
  130.   digitalWrite(RF, LOW);
  131.   digitalWrite(RR, LOW);
  132. }

  133. void moveRightForward(int mSteps) {
  134.   RightFront.step(mSteps);
  135.   digitalWrite(LF, LOW);
  136.   digitalWrite(RF, LOW);
  137.   digitalWrite(RR, HIGH);
  138. }

  139. void moveRightBackward(int mSteps) {
  140.   RightFront.step(mSteps);
  141.   digitalWrite(LF, LOW);
  142.   digitalWrite(RF, LOW);
  143.   digitalWrite(RR, HIGH);
  144. }

  145. void moveLeftForward(int mSteps) {
  146.   RightFront.step(mSteps);
  147.   digitalWrite(LF, LOW);
  148.   digitalWrite(RF, LOW);
  149.   digitalWrite(RR, HIGH);
  150. }

  151. void moveLeftBackward(int mSteps) {
  152.   RightFront.step(mSteps);
  153.   digitalWrite(LF, LOW);
  154.   digitalWrite(RF, LOW);
  155.   digitalWrite(RR, HIGH);
  156. }

  157. void turnRight(int mSteps) {
  158.   RightFront.step(mSteps);
  159.   digitalWrite(LF, LOW);
  160.   digitalWrite(RF, LOW);
  161.   digitalWrite(RR, HIGH);
  162. }

  163. void turnLeft(int mSteps) {
  164.   RightFront.step(mSteps);
  165.   digitalWrite(LF, LOW);
  166.   digitalWrite(RF, LOW);
  167.   digitalWrite(RR, HIGH);
  168. }

  169. void stopRobot(int delay_ms) {
  170.   RightFront.step(0);
  171.   delay(delay_ms);
  172. }

  173. void hardStop() {
  174.   RightFront.step(0);
  175. }
復(fù)制代碼

所有資料51hei提供下載:
MecanumStepperMotor.7z (1.03 KB, 下載次數(shù): 62)



作者: spendell    時間: 2020-1-31 11:10
正好   畢設(shè)需要用這個
作者: xuebj    時間: 2020-12-10 17:44
不錯,簡單明了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 午夜在线| 久久精品国产一区 | 成人在线观看免费 | 中文字幕 视频一区 | 亚洲第一天堂 | 久久99精品国产99久久6男男 | 另类视频在线 | 欧美一级片在线观看 | 精品久久一 | 中文字幕精品一区二区三区精品 | 亚洲午夜视频在线观看 | a级大片免费观看 | 在线看国产 | 国产黄色在线观看 | 国产免费看 | 中文字幕国产视频 | 免费在线毛片 | 亚洲精品一区中文字幕乱码 | 国产亚洲二区 | 国产成人精品一区二 | 九九亚洲 | 中文字幕免费 | 久久精品免费一区二区 | 欧美成人激情 | 免费的网站www | 国产免费又色又爽又黄在线观看 | 高清色 | 视频一区在线 | 欧美日韩综合精品 | 亚洲精品乱码久久久久久按摩观 | 亚洲网站在线观看 | 在线高清免费观看视频 | 精品一区二区三区视频在线观看 | 一区二区三区视频在线 | 亚洲激情网站 | 国产观看| 成人免费视频网站在线观看 | 欧美日本韩国一区二区三区 | 操操操av | 999久久久久久久久6666 | 欧美一区二区三区在线看 |