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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2147|回復: 3
打印 上一主題 下一主題
收起左側

Arduino flash記憶(隨動機械手)不能實現隨動的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:693988 發表于 2020-2-16 18:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
碼源轉載自:http://www.zg4o1577.cn/bbs/dpj-156513-1.html,只是用于學習,若有侵犯原作者權益請告知,我會及時刪除的
附:代碼


  1. #include <Servo.h>
  2. Servo servo_0;  //定義4個舵機
  3. Servo servo_1;
  4. Servo servo_2;
  5. Servo servo_3;
  6. int sensorPin0 = A0;  //電位器阻值輸入口
  7. int sensorPin1 = A1;
  8. int sensorPin2 = A2;
  9. int sensorPin3 = A3;
  10. int SensVal_0;
  11. int SensVal_1;
  12. int SensVal_2;
  13. int SensVal_3;
  14. int led1 = 1;
  15. int led2 = 2;
  16. boolean playmode = false;  //設置運行模式,初始化為學習
  17. float angle0[30];// 存儲底座舵機動作的數組,最多存30個
  18. float angle1[30];//手臂舵機角度數組
  19. float angle2[30];//手掌舵機角度數組
  20. float angle3[30];//夾子舵機角度數組
  21. float dif[4],temp[4];// 差分值與中間數組

  22. int i,j,k,stepsMax,num=0,key_value,num1=0,del;
  23. void setup() {
  24.   // put your setup code here, to run once:
  25.    pinMode(4, INPUT);  // 鍵盤輸入口
  26.    pinMode(sensorPin0, INPUT);
  27.    pinMode(sensorPin1, INPUT);
  28.    pinMode(sensorPin2, INPUT);
  29.    pinMode(sensorPin3, INPUT);
  30.    pinMode(led1, OUTPUT);
  31.    pinMode(led2, OUTPUT);
  32.    servo_0.attach(6); // 連接舵機
  33.    servo_1.attach(9);
  34.    servo_2.attach(10);
  35.    servo_3.attach(11);
  36.    Serial.begin(9600);
  37. }
  38. void loop()
  39. {
  40.   // 主函數,loop循環
  41.   if(playmode == false)      //學習模式
  42.   {
  43.     SensVal_1 = analogRead(sensorPin1); //讀取電位器阻值
  44.     Serial.println(SensVal_1);
  45.     SensVal_1 = map(SensVal_1, 0, 1024, 500, 2500);//將電位器阻值與舵機角度映射,實現兩個機械臂的同步

  46.     SensVal_0 = analogRead(sensorPin0);
  47.     Serial.println(SensVal_0);
  48.     SensVal_0 = map(SensVal_0, 0, 1024, 500, 2500);

  49.     SensVal_2 = analogRead(sensorPin2);
  50.     Serial.println(SensVal_2);
  51.     SensVal_2 = map(SensVal_2, 0, 1024, 500, 2500);

  52.     SensVal_3 = analogRead(sensorPin3);
  53.     Serial.println(SensVal_3);
  54.     SensVal_3 = map(SensVal_3, 0, 1024, 500, 2500);

  55.     servo_0.writeMicroseconds(SensVal_0); //控制主機械臂跟隨從機械臂運行
  56.     servo_1.writeMicroseconds(SensVal_1);
  57.     servo_2.writeMicroseconds(SensVal_2);
  58.     servo_3.writeMicroseconds(SensVal_3);
  59.     digitalWrite(led1,HIGH);
  60.     digitalWrite(led2,LOW);
  61.   }
  62.    else         //運行模式
  63.    {
  64.       for(i=0;i<num;i++)
  65.       {
  66.         temp[0]=angle0[i];    //暫存當前動作角度值
  67.         temp[1]=angle1[i];
  68.         temp[2]=angle2[i];
  69.         temp[3]=angle3[i];
  70.         j=i+1;                //指向下一個動作
  71.         if(j==num) j=0;
  72.         dif[0] = abs(angle0[j]-angle0[i]);     //下一動作與當前動作做差分
  73.         dif[1] = abs(angle1[j]-angle1[i]);
  74.         dif[2] = abs(angle2[j]-angle2[i]);
  75.         dif[3] = abs(angle3[j]-angle3[i]);

  76.         stepsMax = max(dif[0],dif[1]);         //找出最大差分值
  77.         stepsMax = max(stepsMax,dif[2]);
  78.         stepsMax = max(stepsMax,dif[3]);
  79.         //將兩個動作分為最大差分值個小動作,即用每個舵機的差分值除以最大差分值
  80.         if (angle0[j] < angle0[i]) dif[0] = 0-dif[0]/stepsMax; else dif[0] = dif[0]/stepsMax;
  81.         if (angle1[j] < angle1[i]) dif[1] = 0-dif[1]/stepsMax; else dif[1] = dif[1]/stepsMax;
  82.         if (angle2[j] < angle2[i]) dif[2] = 0-dif[2]/stepsMax; else dif[2] = dif[2]/stepsMax;
  83.         if (angle3[j] < angle3[i]) dif[3] = 0-dif[3]/stepsMax; else dif[3] = dif[3]/stepsMax;

  84.         for(k=0;k<stepsMax;k++)   // 運行至下一大動作
  85.         {
  86.           Serial.println("stepin");
  87.           angle0[i] += dif[0];    //運行到下一小動作
  88.           angle1[i] += dif[1];
  89.           angle2[i] += dif[2];
  90.           angle3[i] += dif[3];

  91.           servo_0.writeMicroseconds(angle0);
  92.           servo_1.writeMicroseconds(angle1);
  93.           servo_2.writeMicroseconds(angle2);
  94.           servo_3.writeMicroseconds(angle3);
  95.           delay(1);
  96.         }
  97.          Serial.println("stepout");
  98.         angle0[i] = temp[0];            //返回暫存的動作值
  99.         angle1[i] = temp[1];
  100.         angle2[i] = temp[2];
  101.         angle3[i] = temp[3];
  102.       }
  103.    }
  104.    Serial.println(digitalRead(4));
  105.    Button();    //按鍵檢測
  106. }
  107. void Button() //按鍵檢測
  108. {
  109.   if (digitalRead(4) == true)
  110.   {
  111.     delay(20);                //消抖
  112.     if (digitalRead(4) == true)
  113.     {
  114.         key_value = 1;
  115.         delay(1000);
  116.         if(digitalRead(4) == true) key_value = 2; //長按進入運行模式
  117.     }
  118.   }

  119.     if ((key_value == 1)) // 記錄舵機當前位置
  120.     {

  121.      angle0[num1]=SensVal_0;
  122.      angle1[num1]=SensVal_1;
  123.      angle2[num1]=SensVal_2;
  124.      angle3[num1]=SensVal_3;
  125.      num1++;                    //指針加1
  126.      key_value = 0;
  127.      playmode = false;
  128.     }
  129.     else if (key_value == 2)
  130.     {
  131.       num = num1;               //取出動作的總數
  132.       num1=0;                   //為下一次學習做準備
  133.       playmode = true;          //運行模式
  134.       key_value = 0;
  135.       digitalWrite(led2,HIGH);
  136.       digitalWrite(led1,LOW);
  137.     }
  138. }
復制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:693525 發表于 2020-2-20 14:39 | 只看該作者
怎么還是按下按鍵才能隨動,而且怎么操作啊
回復

使用道具 舉報

板凳
ID:693988 發表于 2020-2-20 19:53 | 只看該作者
666cww 發表于 2020-2-20 14:39
怎么還是按下按鍵才能隨動,而且怎么操作啊

我現在也是出現了這樣的問題才發帖求助的
回復

使用道具 舉報

地板
ID:742968 發表于 2020-5-2 19:23 | 只看該作者
熱心市民王先生2 發表于 2020-2-20 19:53
我現在也是出現了這樣的問題才發帖求助的

按鍵接的沒對,Serial.println(key_value);在讀取按鍵里面加這個,軟按鍵對,串口通訊會返回1、2。作者用的是微動按鍵。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄a在线观看 | 韩国理论电影在线 | 欧美久久久久 | 亚洲黄色网址视频 | 黄色大片在线免费观看 | 国产精品久久久久aaaa | 日本福利片 | 激情免费视频 | 国产aa | 日韩视频福利 | 91久久综合 | 国产99久久精品一区二区300 | 日韩精品一区二区三区 | 欧美日韩综合视频 | 久久精品色欧美aⅴ一区二区 | 北条麻妃99精品青青久久 | 亚洲精品3 | 久久成人一区 | 亚洲一二三在线观看 | www四虎com| 国产精品123区 | 亚洲一区电影 | 亚洲欧洲精品一区 | 九九精品影院 | 亚洲视频一区在线观看 | 亚洲一区二区免费电影 | 亚洲国产视频一区二区 | 麻豆成人在线视频 | 免费高清av | 国产一区二区三区在线看 | 欧美日韩在线一区二区三区 | 久久久久一区二区三区四区 | 91美女在线观看 | 欧美不卡 | 2021天天躁夜夜看 | 国产91丝袜在线播放 | 夜夜爽99久久国产综合精品女不卡 | 日本理论片好看理论片 | 日韩一级| 欧美性网站 | 91麻豆产精品久久久久久 |