色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>帶Arduino的四足蜘蛛機(jī)器人

帶Arduino的四足蜘蛛機(jī)器人

2023-02-08 | zip | 3.33 MB | 次下載 | 2積分

資料介紹

描述

第 1 步:調(diào)整伺服電機(jī)位置

?

?
?
?
pYYBAGPjMgqAc8PjAAAbdoiFjyc078.png
?
1 / 2 ?調(diào)整伺服
?

在開始組裝之前,我們需要手動(dòng)調(diào)整伺服電機(jī)的角度調(diào)整。否則,您的機(jī)器人將無法正常工作

將伺服臂連接到伺服器上,然后順時(shí)針緩慢轉(zhuǎn)動(dòng)伺服臂,直到臂停止。如果伺服臂沒有停止在上圖所示的相同角度,那也沒關(guān)系。重要的是我們找到伺服的終點(diǎn)。從伺服器上拆下伺服臂并重新定位,使其垂直于伺服器主體。

如圖所示,慢慢逆時(shí)針轉(zhuǎn)動(dòng)舵機(jī)臂,直到它與舵機(jī)本體平行。這是伺服系統(tǒng)的中心位置,在開始組裝機(jī)器人之前,將 8 個(gè)伺服系統(tǒng)置于中心位置非常重要。舵機(jī)臂與舵機(jī)本體平行后,取下舵機(jī)臂,放置一旁待用。

pYYBAGPjMg2AdQnvAACbTeSSRrs165.png
校準(zhǔn)舵機(jī)
?

如果您的伺服電機(jī)是 360 度模擬伺服電機(jī),則無法進(jìn)行手動(dòng)布線。這就是為什么您可以使用我與您分享的代碼來校準(zhǔn)您的伺服電機(jī)。如上面(3)的電路圖,把你的伺服電機(jī)變成1.2.3.4.5.6.7.8。將底部的代碼連接到引腳,將其安裝到您的 arduino如果不這樣做,您的機(jī)器人將無法穩(wěn)定工作。

伺服校準(zhǔn)代碼:

#include     // include servo library


// Define 8 Servos
Servo myServo1; // Front Left Pivot Servo
Servo myServo2; // Front Left Lift Servo
Servo myServo3; // Back Left Pivot Servo
Servo myServo4; // Back Left Lift Servo
Servo myServo5; // Back Right Pivot Servo
Servo myServo6; // Back Right Lift Servo
Servo myServo7; // Front Right Pivot Servo
Servo myServo8; // Front Right Lift Servo


void setup() {
  // put your setup code here, to run once:
  myServo1.attach(1);
  myServo2.attach(2);
  myServo3.attach(3);
  myServo4.attach(4);
  myServo5.attach(5);
  myServo6.attach(6);
  myServo7.attach(7);
  myServo8.attach(8);
  
  myServo1.write(90);
  myServo2.write(90);
  myServo3.write(90);
  myServo4.write(90);
  myServo5.write(90);
  myServo6.write(90);
  myServo7.write(90);
  myServo8.write(90);
}


void loop() {
  
  // put your main code here, to run repeatedly:
}

如果您已完成伺服調(diào)整,則可以進(jìn)入腿部組裝階段。

第 2 步:腿組裝階段

?

?
?
?
poYBAGPjMg-Aeu1UAACTYfRb098629.png
?
1 / 3 ?支腿組裝
?

您必須按照逐步的視覺效果來連接腿部。您可以按照原理圖中的步驟名稱進(jìn)行連接。重復(fù)步驟 1 到 10 恰好4 次并構(gòu)建 4 條腿:

  • 第 1 步:將伺服單臂放在底座樞軸板上,然后將伺服安裝螺釘從支腿向上樞軸板的后部擰入伺服單臂。
  • 第 2 步:將伺服單臂連接到站立式伺服臂,并將伺服安裝螺釘連接到伺服。從腿部伺服臂的背面擰上伺服單臂。
  • 第 3 步:使用 M3x10mm 螺釘和 M3 纖維螺母將腿部平行接頭連接到腿部部件。
  • 第 4 步:使用 M3X10mm 螺釘和 M3 纖維螺母將支腿連接到支腿伺服臂。
  • 第 5 步:將伺服器插入伺服器支架。
  • 第 6 步:將伺服器的頂端插入基座伺服器槽中。
  • 第 7 步:使用兩個(gè) M3 x 12mm 螺釘和兩個(gè) M3 纖維螺母將伺服支架連接到支腿伺服插座。
  • 第 8 步:使用 M3X10MM 螺釘和 M3 纖維螺母將腿平行板連接到腿的另一端。
  • 第 9 步:將舵機(jī)旋轉(zhuǎn)到中心位置,腿部平行關(guān)節(jié)水平放置,使用舵機(jī)隨附的舵機(jī)臂螺釘將腿部舵機(jī)臂連接到舵機(jī)上
  • 第 10 步:使用兩個(gè) M3 x 10mm 螺絲和兩個(gè) M3 螺母將前面步驟中的腿組件連接到腿底部樞軸板。

腿組裝有點(diǎn)困難,但相信我,如果這些階段結(jié)束了,剩下的就來了。如果您已完成這些步驟,讓我們繼續(xù)進(jìn)行車身組裝部分。

第 3 步:車身組裝

?

?
?
?
pYYBAGPjMhGAceyRAACTwrRQF4U939.png
?
1 / 2 ?車身裝配 - 方案 1 和 2
?

在這個(gè)階段,你應(yīng)該小心數(shù)字。原理圖是根據(jù)零件號解釋的,因此您應(yīng)該在組裝之前閱讀我們創(chuàng)建的列表;

架構(gòu) 1 和 2 的零件清單:

  • 1- 車身上板
  • 2- M3x10MM 螺絲
  • 3 - 伺服電機(jī)
  • 4 - M3 螺母
  • 5 - M3 纖維螺母
  • 7 - M3x12MM 螺絲
  • 8 - 墊片
  • 10 - 伺服支架

第 11 步:使用四個(gè) M3x10mm 螺釘和四個(gè) M3 平螺母將四個(gè)閥桿墊片連接到閥桿底板上。

第 12 步:將四個(gè)舵機(jī)放在機(jī)箱頂板的頂部。

第 13 步:將舵機(jī)支架連接到每個(gè)舵機(jī)的頂部。

第 14 步:使用 M3x12mm 螺釘和 M3 纖維螺母將每個(gè)伺服支架連接到機(jī)箱頂板。

?

?
?
?
pYYBAGPjMhOAXsELAACIh1lqlrI541.png
?
1 / 3 ?車身組裝 - 方案 3、4 和 5
?

模式 3、4 和 5 的零件清單:

  • 1 - 伺服螺絲
  • 2 - M3x10MM 螺栓
  • 3 - M3 螺母
  • 4 - M3 纖維螺母

第 15 步:使用 M3x10mm 螺釘和 M3 纖維螺母將每個(gè)支腿連接到桿底板上。不要將螺釘擰得過緊,否則可能會(huì)導(dǎo)致舵機(jī)發(fā)生故障。

第 16 步:使用四塊 M3x10mm 螺釘和 M3 螺母將主體底板連接到主體頂板。

第 17 步:旋轉(zhuǎn)每條腿,使其呈 45 度角,如圖所示。安裝支腿上樞軸板。使用兩個(gè) M3x10mm 螺釘和兩個(gè) M3 螺母安裝到每個(gè)樞軸伺服器和支腿。

Step 18:用舵機(jī)螺絲將舵機(jī)單臂固定到舵機(jī)上。

最后,使用樹脂立管將電池座固定在機(jī)器人的下部。

第 4 步:Arduino 連接

?

poYBAGPjMhaAPS9RAADREIgJqqQ589.png
Arduino 連接
?

是時(shí)候在 Arduino 和組件之間建立連接了。

請按照說明進(jìn)行操作:

  • 左前軸:引腳 2
  • 左前提升:引腳 3
  • 左后軸:引腳 4
  • 左后提升:引腳 5
  • 右后軸:引腳 6
  • 右后提升:引腳 7
  • 右前軸:引腳 8
  • 右前提升:引腳 9
  • 紅外模塊:引腳 12

如電路圖所示,從第 2 個(gè)數(shù)字引腳到第 9 個(gè)數(shù)字引腳按順序連接伺服電機(jī)。如圖所示,將IR 接收器模塊連接到第 12 個(gè)引腳。

?
?
?
pYYBAGPjMhmAfqLRAABNtQQXgd0642.png
?
1 / 2 ?用于屏蔽的外部電源連接
?

由于蜘蛛機(jī)器人使用多個(gè)伺服電機(jī),arduon的功率不足,為此我們需要進(jìn)行外部電源輸入。

您需要使用最小 4.8v 最大 5v 電源為 shild 供電無論使用鋰電池還是經(jīng)典電池,都取決于您將提供什么樣的能量。

這里重要的是它不能超過 5 伏特,否則你的 Arduino 會(huì)損壞。我已經(jīng)與您分享了一些電池樣本(第二張圖片)作為示例。如果要在上面使用鋰聚合物電池,則必須使用側(cè)面的降壓電路。因?yàn)?/font>大于 5 伏的電壓會(huì)損壞您的卡。

如電路圖(第三張圖)所示,將降壓電路的輸出設(shè)置為 5 伏并將其連接到屏蔽層就足夠了。

?

poYBAGPjMhuAQgdbAAC-wFVHO8c932.png
可選 AAA 電池連接
?

此外,您可以改用經(jīng)典的 AAA 電池為此,您應(yīng)該將 4 節(jié) AAA 電池插入電池座,然后連接到 Arduino 擴(kuò)展板。

第 5 步:上傳 Arduino 代碼和結(jié)論

我們已經(jīng)為您準(zhǔn)備了一個(gè)代碼,以便您一開始就可以毫無問題地移動(dòng)蜘蛛機(jī)器人。代碼中準(zhǔn)備了一些命令,但你可以自己修改它;

#include  // include IR Remote library
#include     // include servo library


//===== Globals ============================================================================


// Define USRF pins and variables
#define trigPin A3
#define echoPin A2
#define INCH 0
#define CM 1


// Define IR Remote Button Codes
#define irUp  16736925
#define irDown 16754775
#define irRight 16761405
#define irLeft 16720605
#define irOK 16712445
#define ir1 16738455
#define ir2 16750695
#define ir3 16756815
#define ir4 16724175
#define ir5 16718055
#define ir6 16743045
#define ir7 16716015
#define ir8 16726215
#define ir9 16734885
#define ir0 16730805
#define irStar 16728765
#define irPound 0000005
#define irRepeat 16732845



// calibration
int da =  -12,  // Left Front Pivot
    db =   10,  // Left Back Pivot
    dc =  -18,  // Right Back Pivot
    dd =   12;  // Right Front Pivot


// servo initial positions + calibration
int a90  = (90  + da),
    a120 = (120 + da),
    a150 = (150 + da),
    a180 = (180 + da);


int b0   = (0   + db),
    b30  = (30  + db),
    b60  = (60  + db),
    b90  = (90  + db);


int c90  = (90  + dc),
    c120 = (120 + dc),
    c150 = (150 + dc),
    c180 = (180 + dc);


int d0   = (0   + dd),
    d30  = (30  + dd),
    d60  = (60  + dd),
    d90  = (90  + dd);


// start points for servo
int s11 = 90; // Front Left Pivot Servo
int s12 = 90; // Front Left Lift Servo
int s21 = 90; // Back Left Pivot Servo
int s22 = 90; // Back Left Lift Servo
int s31 = 90; // Back Right Pivot Servo
int s32 = 90; // Back Right Lift Servo
int s41 = 90; // Front Right Pivot Servo
int s42 = 90; // Front Right Lift Servo


int f    = 0;
int b    = 0;
int l    = 0;
int r    = 0;
int spd  = 3;  // Speed of walking motion, larger the number, the slower the speed
int high = 0;   // How high the robot is standing


// Define 8 Servos
Servo myServo1; // Front Left Pivot Servo
Servo myServo2; // Front Left Lift Servo
Servo myServo3; // Back Left Pivot Servo
Servo myServo4; // Back Left Lift Servo
Servo myServo5; // Back Right Pivot Servo
Servo myServo6; // Back Right Lift Servo
Servo myServo7; // Front Right Pivot Servo
Servo myServo8; // Front Right Lift Servo


// Set up IR Sensor
int irReceiver = 12;       // Use pin D12 for IR Sensor
IRrecv irrecv(irReceiver); // create a new instance of the IR Receiver
decode_results results;


//==========================================================================================


//===== Setup ==============================================================================


void setup()
{
  // Attach servos to Arduino Pins
  myServo1.attach(2);
  myServo2.attach(3);
  myServo3.attach(4);
  myServo4.attach(5);
  myServo5.attach(6);
  myServo6.attach(7);
  myServo7.attach(8);
  myServo8.attach(9);


  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);


  irrecv.enableIRIn(); //start the receiver


  Serial.begin (9600);


}//setup


//==========================================================================================


//== Loop ==================================================================================


void loop()
{
  unsigned long value;
  unsigned long lastValue;
  
  center_servos();  // Center all servos
  high = 15;        // Set hight to 15
  spd = 3;          // Set speed to 3


  while (1 == 1)    // Loop forever
  {
    if (irrecv.decode(&results)) // If we have received an IR signal
    {
      value = results.value;


      if (value == irRepeat)
        value = lastValue;


      switch (value)
      {
        case irUp:
          lastValue = irUp;
          forward();
          break;


        case irDown:
          lastValue = irDown;
          back();
          break;


        case irRight:
          lastValue = irRight;
          turn_right();
          break;


        case irLeft:
          lastValue = irLeft;
          turn_left();
          break;


        case irOK:
          lastValue = irOK;
          break;


        case ir1:
          lastValue = ir1;
          bow();
          break;


        case ir2:
          lastValue = ir2;
          wave();
          break;


        case ir3:
          lastValue = ir3;
          increase_speed();
          break;


        case ir4:
          lastValue = ir4;
          break;


        case ir5:
          lastValue = ir5;
          break;


        case ir6:
          lastValue = ir6;
          decrease_speed();
          break;


        case ir7:
          lastValue = ir7;
          break;


        case ir8:
          lastValue = ir8;
          dance();
          break;


        case ir9:
          lastValue = ir9;
          break;


        case ir0:
          lastValue = ir0;
          center_servos();
          break;


        case irStar:
          lastValue = irStar;
          trim_left();
          break;


        case irPound:
          lastValue = irPound;
          trim_right();
          break;


        default:
          break;
      }


      irrecv.resume(); //next value
      delay(50);  // Pause for 50ms before executing next movement


    }// if irrecv.decode
  }//while


}//loop


void dance()
{
  center_servos();
  delay(100);
  lean_left();
  delay(300);
  lean_right();
  delay(300);
  lean_left();
  delay(300);
  lean_right();
  delay(300);
  lean_left();
  delay(300);
  lean_right();
  delay(300);
  lean_left();
  delay(300);
  lean_right();
  delay(800);
  center_servos();
  delay(300);
  bow();
  center_servos();
}


//== Wave ==================================================================================


void wave()
{
  /*
  myServo1 - Front Left Pivot Servo
  myServo2 - Front Left Lift Servo
  myServo3 - Back Left Pivot Servo
  myServo4 - Back Left Lift Servo
  myServo5 - Back Right Pivot Servo
  myServo6 - Back Right Lift Servo
  myServo7 - Front Right Pivot Servo
  myServo8 - Front Right Lift Servo
  */


  center_servos();
  myServo4.write(45);
  myServo6.write(45);
  delay(200);
  myServo8.write(0);
  delay(200);
  myServo7.write(180);
  delay(200);
  myServo7.write(30);
  delay(300);
  myServo7.write(180);
  delay(300);
  myServo7.write(30);
  delay(300);
  myServo7.write(s41);
  delay(300);
  myServo8.write(s42);
  center_servos();


}


//== Bow ===================================================================================


void bow()
{
  center_servos();
  delay(200);
  myServo2.write(15);
  myServo8.write(15);
  delay(700);
  myServo2.write(90);
  myServo8.write(90);
  delay(700);
}


//== Lean_Left =============================================================================


void lean_left()
{
  myServo2.write(15);
  myServo4.write(15);
  myServo6.write(150);
  myServo8.write(150);
}


//== Lean_Right ============================================================================


void lean_right()
{
  myServo2.write(150);
  myServo4.write(150);
  myServo6.write(15);
  myServo8.write(15);
}


//== Lean_Left =============================================================================


void trim_left()
{
  da--; // Left Front Pivot
  db--; // Left Back Pivot
  dc--; // Right Back Pivot
  dd--; // Right Front Pivot
}


//== Lean_Right ============================================================================


void trim_right()
{
  da++; // Left Front Pivot
  db++; // Left Back Pivot
  dc++; // Right Back Pivot
  dd++; // Right Front Pivot
}


//== Forward ===============================================================================


void forward()
{
  // calculation of points


  // Left Front Pivot
  a90 = (90 + da),
  a120 = (120 + da),
  a150 = (150 + da),
  a180 = (180 + da);


  // Left Back Pivot
  b0 = (0 + db),
  b30 = (30 + db),
  b60 = (60 + db),
  b90 = (90 + db);


  // Right Back Pivot
  c90 = (90 + dc),
  c120 = (120 + dc),
  c150 = (150 + dc),
  c180 = (180 + dc);


  // Right Front Pivot
  d0 = (0 + dd),
  d30 = (30 + dd),
  d60 = (60 + dd),
  d90 = (90 + dd);


  // set servo positions and speeds needed to walk forward one step
  // (LFP,  LBP, RBP,  RFP, LFL, LBL, RBL, RFL, S1, S2, S3, S4)
  srv(a180, b0 , c120, d60, 42,  33,  33,  42,  1,  3,  1,  1);
  srv( a90, b30, c90,  d30, 6,   33,  33,  42,  3,  1,  1,  1);
  srv( a90, b30, c90,  d30, 42,  33,  33,  42,  3,  1,  1,  1);
  srv(a120, b60, c180, d0,  42,  33,  6,   42,  1,  1,  3,  1);
  srv(a120, b60, c180, d0,  42,  33,  33,  42,  1,  1,  3,  1);
  srv(a150, b90, c150, d90, 42,  33,  33,  6,   1,  1,  1,  3);
  srv(a150, b90, c150, d90, 42,  33,  33,  42,  1,  1,  1,  3);
  srv(a180, b0,  c120, d60, 42,  6,   33,  42,  1,  3,  1,  1);
  //srv(a180, b0,  c120, d60, 42,  15,  33,  42,  1,  3,  1,  1);
  
}


//== Back ==================================================================================


void back ()
{
  // set servo positions and speeds needed to walk backward one step
  // (LFP,  LBP, RBP,  RFP, LFL, LBL, RBL, RFL, S1, S2, S3, S4)
  srv(180, 0,  120, 60, 42, 33, 33, 42, 3,  1, 1, 1);
  srv(150, 90, 150, 90, 42, 18, 33, 42, 1,  3, 1, 1);
  srv(150, 90, 150, 90, 42, 33, 33, 42, 1,  3, 1, 1);
  srv(120, 60, 180, 0,  42, 33, 33, 6,  1,  1, 1, 3);
  srv(120, 60, 180, 0,  42, 33, 33, 42, 1,  1, 1, 3);
  srv(90,  30, 90,  30, 42, 33, 18, 42, 1,  1, 3, 1);
  srv(90,  30, 90,  30, 42, 33, 33, 42, 1,  1, 3, 1);
  srv(180, 0,  120, 60, 6,  33, 33, 42, 3,  1, 1, 1);


}


//== Left =================================================================================


void turn_left ()
{
  // set servo positions and speeds needed to turn left one step
  // (LFP,  LBP, RBP,  RFP, LFL, LBL, RBL, RFL, S1, S2, S3, S4)
  srv(150,  90, 90,  30, 42, 6,  33, 42, 1, 3, 1, 1);
  srv(150,  90, 90,  30, 42, 33, 33, 42, 1, 3, 1, 1);
  srv(120,  60, 180, 0,  42, 33, 6,  42, 1, 1, 3, 1);
  srv(120,  60, 180, 0,  42, 33, 33, 24, 1, 1, 3, 1);
  srv(90,   30, 150, 90, 42, 33, 33, 6,  1, 1, 1, 3);
  srv(90,   30, 150, 90, 42, 33, 33, 42, 1, 1, 1, 3);
  srv(180,  0,  120, 60, 6,  33, 33, 42, 3, 1, 1, 1);
  srv(180,  0,  120, 60, 42, 33, 33, 33, 3, 1, 1, 1);
}


//== Right ================================================================================


void turn_right ()
{
  // set servo positions and speeds needed to turn right one step
  // (LFP,  LBP, RBP,  RFP, LFL, LBL, RBL, RFL, S1, S2, S3, S4)
  srv( 90, 30, 150, 90, 6,  33, 33, 42, 3, 1, 1, 1);
  srv( 90, 30, 150, 90, 42, 33, 33, 42, 3, 1, 1, 1);
  srv(120, 60, 180, 0,  42, 33, 33, 6,  1, 1, 1, 3);
  srv(120, 60, 180, 0,  42, 33, 33, 42, 1, 1, 1, 3);
  srv(150, 90, 90,  30, 42, 33, 6,  42, 1, 1, 3, 1);
  srv(150, 90, 90,  30, 42, 33, 33, 42, 1, 1, 3, 1);
  srv(180, 0,  120, 60, 42, 6,  33, 42, 1, 3, 1, 1);
  srv(180, 0,  120, 60, 42, 33, 33, 42, 1, 3, 1, 1);
}


//== Center Servos ========================================================================


void center_servos()
{
  myServo1.write(90);
  myServo2.write(90);
  myServo3.write(90);
  myServo4.write(90);
  myServo5.write(90);
  myServo6.write(90);
  myServo7.write(90);
  myServo8.write(90);


  int s11 = 90; // Front Left Pivot Servo
  int s12 = 90; // Front Left Lift Servo
  int s21 = 90; // Back Left Pivot Servo
  int s22 = 90; // Back Left Lift Servo
  int s31 = 90; // Back Right Pivot Servo
  int s32 = 90; // Back Right Lift Servo
  int s41 = 90; // Front Right Pivot Servo
  int s42 = 90; // Front Right Lift Servo
}


//== Increase Speed ========================================================================


void increase_speed()
{
  if (spd > 3)
    spd--;
}


//== Decrease Speed ========================================================================


void decrease_speed()
{
  if (spd < 50)
    spd++;
}


//== Srv ===================================================================================


void srv( int  p11, int p21, int p31, int p41, int p12, int p22, int p32, int p42, int sp1, int sp2, int sp3, int sp4)
{


  // p11: Front Left Pivot Servo
  // p21: Back Left Pivot Servo
  // p31: Back Right Pivot Servo
  // p41: Front Right Pivot Servo
  // p12: Front Left Lift Servo
  // p22: Back Left Lift Servo
  // p32: Back Right Lift Servo
  // p42: Front Right Lift Servo
  // sp1: Speed 1
  // sp2: Speed 2
  // sp3: Speed 3
  // sp4: Speed 4


  // Multiply lift servo positions by manual height adjustment
  p12 = p12 + high * 3;
  p22 = p22 + high * 3;
  p32 = p32 + high * 3;
  p42 = p42 + high * 3;


  while ((s11 != p11) || (s21 != p21) || (s31 != p31) || (s41 != p41) || (s12 != p12) || (s22 != p22) || (s32 != p32) || (s42 != p42))
  {


    // Front Left Pivot Servo
    if (s11 < p11)            // if servo position is less than programmed position
    {
      if ((s11 + sp1) <= p11)
        s11 = s11 + sp1;      // set servo position equal to servo position plus speed constant
      else
        s11 = p11;
    }


    if (s11 > p11)            // if servo position is greater than programmed position
    {
      if ((s11 - sp1) >= p11)
        s11 = s11 - sp1;      // set servo position equal to servo position minus speed constant
      else
        s11 = p11;
    }


    // Back Left Pivot Servo
    if (s21 < p21)
    {
      if ((s21 + sp2) <= p21)
        s21 = s21 + sp2;
      else
        s21 = p21;
    }


    if (s21 > p21)
    {
      if ((s21 - sp2) >= p21)
        s21 = s21 - sp2;
      else
        s21 = p21;
    }


    // Back Right Pivot Servo
    if (s31 < p31)
    {
      if ((s31 + sp3) <= p31)
        s31 = s31 + sp3;
      else
        s31 = p31;
    }


    if (s31 > p31)
    {
      if ((s31 - sp3) >= p31)
        s31 = s31 - sp3;
      else
        s31 = p31;
    }


    // Front Right Pivot Servo
    if (s41 < p41)
    {
      if ((s41 + sp4) <= p41)
        s41 = s41 + sp4;
      else
        s41 = p41;
    }


    if (s41 > p41)
    {
      if ((s41 - sp4) >= p41)
        s41 = s41 - sp4;
      else
        s41 = p41;
    }


    // Front Left Lift Servo
    if (s12 < p12)
    {
      if ((s12 + sp1) <= p12)
        s12 = s12 + sp1;
      else
        s12 = p12;
    }


    if (s12 > p12)
    {
      if ((s12 - sp1) >= p12)
        s12 = s12 - sp1;
      else
        s12 = p12;
    }


    // Back Left Lift Servo
    if (s22 < p22)
    {
      if ((s22 + sp2) <= p22)
        s22 = s22 + sp2;
      else
        s22 = p22;
    }


    if (s22 > p22)
    {
      if ((s22 - sp2) >= p22)
        s22 = s22 - sp2;
      else
        s22 = p22;
    }


    // Back Right Lift Servo
    if (s32 < p32)
    {
      if ((s32 + sp3) <= p32)
        s32 = s32 + sp3;
      else
        s32 = p32;
    }


    if (s32 > p32)
    {
      if ((s32 - sp3) >= p32)
        s32 = s32 - sp3;
      else
        s32 = p32;
    }


    // Front Right Lift Servo
    if (s42 < p42)
    {
      if ((s42 + sp4) <= p42)
        s42 = s42 + sp4;
      else
        s42 = p42;
    }


    if (s42 > p42)
    {
      if ((s42 - sp4) >= p42)
        s42 = s42 - sp4;
      else
        s42 = p42;
    }


    // Write Pivot Servo Values
    myServo1.write(s11 + da);
    myServo3.write(s21 + db);
    myServo5.write(s31 + dc);
    myServo7.write(s41 + dd);


    // Write Lift Servos Values
    myServo2.write(s12);
    myServo4.write(s22);
    myServo6.write(s32);
    myServo8.write(s42);


    delay(spd); // Delay before next movement


  }//while
} //srv


//== USRF Function ========================================================================


long get_distance(bool unit)
{
  // if unit == 0 return inches, else return cm


  long duration = 0, 
       cm = 0, 
       inches = 0;


  // The sensor is triggered by a HIGH pulse of 10 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);


  // Read the signal from the sensor: a HIGH pulse whose
  // duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(echoPin, INPUT);
  duration = pulseIn(echoPin, HIGH);


  // convert the time into a distance
  cm = (duration / 2) / 29.1;
  inches = (duration / 2) / 74;


  if (unit == INCH)
    return inches;
  else
    return cm;
}

這些定義給控件的動(dòng)作就是之前在arduino代碼中定義的動(dòng)作。您可以根據(jù)自己的意愿在代碼中定義控制器的空閑管腳。

poYBAGPjMh-Ae2QlAACHB-vW6Rc986.png
Remote ControlGuide(根據(jù)代碼)
?

每個(gè)遙控器都有自己唯一的 ID 號。為了將您自己的遙控器介紹給您的機(jī)器人,您需要知道遙控器按鈕的 ID 號。這里面,你需要先把最下面的代碼下載到你的Arduino上,一個(gè)一個(gè)的知道你遙控器按鍵的ID號,然后復(fù)制到你的主代碼中。

您已成功完成蜘蛛機(jī)器人項(xiàng)目!


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  449次下載  |  免費(fèi)
  3. 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  136次下載  |  1 積分
  5. 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
  6. 0.10 MB   |  123次下載  |  免費(fèi)
  7. 4550W充電機(jī)原理圖
  8. 0.13 MB   |  2次下載  |  6 積分
  9. 5USB的PD快充協(xié)議電壓誘騙控制器FS312A中文手冊
  10. 1.51 MB   |  2次下載  |  免費(fèi)
  11. 6USB的PD和OC快充協(xié)議電壓誘騙控制器FS312B中文手冊
  12. 1.35 MB   |  2次下載  |  免費(fèi)
  13. 7USB Type_C PD快充協(xié)議智能觸發(fā)芯片F(xiàn)S8025B應(yīng)用手冊
  14. 1.48 MB   |  1次下載  |  免費(fèi)
  15. 8ADI公司串行端口開發(fā)和故障排除指南
  16. 343.09KB   |  1次下載  |  免費(fèi)

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  449次下載  |  免費(fèi)
  3. 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  136次下載  |  1 積分
  5. 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
  6. 0.10 MB   |  123次下載  |  免費(fèi)
  7. 4使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
  8. 2.96 MB   |  44次下載  |  免費(fèi)
  9. 53314A函數(shù)發(fā)生器維修手冊
  10. 16.30 MB   |  31次下載  |  免費(fèi)
  11. 6美的電磁爐維修手冊大全
  12. 1.56 MB   |  22次下載  |  5 積分
  13. 7使用TL431設(shè)計(jì)電源
  14. 0.67 MB   |  10次下載  |  免費(fèi)
  15. 8感應(yīng)筆電路圖
  16. 0.06 MB   |  10次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935119次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73807次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65987次下載  |  10 積分
主站蜘蛛池模板: 香蕉动漫库| 伊人热人久久中文字幕| 欧美成人momandson| 美女伸开两腿让我爽| 免费夜色污私人影院网站| 免费乱理伦片在线观看八戒| 欧美GV肉片视频免费观看| 日本无码色哟哟婷婷最新网站| 色噜噜噜噜亚洲第一| 香蕉eeww99国产精品| 伊人22222| 99久久免费看少妇高潮A片| 朝鲜黄色录像| 国产乱对白精彩在线播放| 久9视频这里只有精品123| 嫩B人妻精品一区二区三区| 色爱区综合小说| 亚洲七七久久桃花综合| 97精品国偷拍自产在线| 国产69精品久久久久麻豆| 荷兰少归BVBV| 挠黑色超薄丝袜脚心vk40分钟| 日本亚洲精品色婷婷在线影院| 新新电影理论中文字幕| 找老女人泻火对白自拍| 草莓视频在线播放视频| 国产人妻人伦精品A区| 久久综合色一综合色88| 日本久久精品免视看国产成人| 亚洲aaaa级特黄毛片| 97成人在线| 国产免费阿v精品视频网址| 旧里番YY6080在线播放| 日日啪在线影院百度| 亚洲熟女片嫩草影院| jk制服喷水| 好嗨哟在线看片免费| 欧美夜夜噜2017最新| 亚洲国产成人爱AV在线播放丿 | 好大好硬好湿再深一点网站| 男女后进式猛烈xx00动态图片|