資料介紹
描述
第 1 步:調(diào)整伺服電機(jī)位置
?
在開始組裝之前,我們需要手動(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ī)臂,放置一旁待用。
如果您的伺服電機(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 步:腿組裝階段
?
您必須按照逐步的視覺效果來連接腿部。您可以按照原理圖中的步驟名稱進(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 步:車身組裝
?
在這個(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ī)箱頂板。
?
模式 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 連接
?
是時(shí)候在 Arduino 和組件之間建立連接了。
請按照說明進(jìn)行操作:
- 左前軸:引腳 2
- 左前提升:引腳 3
- 左后軸:引腳 4
- 左后提升:引腳 5
- 右后軸:引腳 6
- 右后提升:引腳 7
- 右前軸:引腳 8
- 右前提升:引腳 9
- 紅外模塊:引腳 12
如電路圖所示,從第 2 個(gè)數(shù)字引腳到第 9 個(gè)數(shù)字引腳按順序連接伺服電機(jī)。如圖所示,將IR 接收器模塊連接到第 12 個(gè)引腳。
由于蜘蛛機(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 伏并將其連接到屏蔽層就足夠了。
?
此外,您可以改用經(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ù)自己的意愿在代碼中定義控制器的空閑管腳。
每個(gè)遙控器都有自己唯一的 ID 號。為了將您自己的遙控器介紹給您的機(jī)器人,您需要知道遙控器按鈕的 ID 號。這里面,你需要先把最下面的代碼下載到你的Arduino上,一個(gè)一個(gè)的知道你遙控器按鍵的ID號,然后復(fù)制到你的主代碼中。
您已成功完成蜘蛛機(jī)器人項(xiàng)目!
- 用3D打印機(jī)和4足蜘蛛機(jī)器人制作伺服電機(jī) 1次下載
- 基于Arduino的兩足機(jī)器人Baby Dino
- 邁爾斯開源四足蜘蛛機(jī)器人
- 分享一個(gè)四足蜘蛛機(jī)器人(帶源碼)
- 六足仿生巡檢機(jī)器人的設(shè)計(jì)方案 43次下載
- 如何實(shí)現(xiàn)雙足步行機(jī)器人系統(tǒng)設(shè)計(jì)與運(yùn)動(dòng)控制及虛擬現(xiàn)實(shí)的仿真研究 20次下載
- 如何實(shí)現(xiàn)雙足機(jī)器人的步態(tài)規(guī)劃與仿真研究 15次下載
- 平面液壓雙足機(jī)器人步態(tài)規(guī)劃及阻抗控制研究說明 15次下載
- 怎么樣才能設(shè)計(jì)仿人雙足機(jī)器人的機(jī)構(gòu) 20次下載
- 基于ZMP的雙足機(jī)器人動(dòng)態(tài)步行控制研究 31次下載
- Arduino教學(xué)機(jī)器人的使用教程免費(fèi)下載 37次下載
- 四足機(jī)器人仿生關(guān)節(jié)的研究現(xiàn)狀詳細(xì)概述 8次下載
- 四足仿生機(jī)器人控制理論的發(fā)展詳細(xì)概述 0次下載
- 基于靜態(tài)平衡的四足機(jī)器人斜面步態(tài)規(guī)劃張文宇 3次下載
- 四足機(jī)器人測試視頻下載 130次下載
- 在NVIDIA Isaac Lab中訓(xùn)練四足機(jī)器人運(yùn)動(dòng) 124次閱讀
- 使用XR806聯(lián)調(diào)控制四足馬術(shù)機(jī)器人 707次閱讀
- 如何制作一個(gè)六足機(jī)器人 935次閱讀
- 如何使用Arduino制造一個(gè)自動(dòng)平衡機(jī)器人 4429次閱讀
- 面對疫情 醫(yī)療機(jī)器人能幫上什么忙? 2126次閱讀
- dfrobotArcBotics 六足機(jī)器人套件簡介 1873次閱讀
- dfrobotDevastator履帶機(jī)器人移動(dòng)平臺(tái)簡介 1515次閱讀
- 機(jī)器視覺的機(jī)器人取代四臺(tái)傳統(tǒng)的火焰處理機(jī)器人 3270次閱讀
- 四足太陽能機(jī)器人diy圖解 5514次閱讀
- 基于能自主型機(jī)器人足球比賽的仿人機(jī)器人研究方案 925次閱讀
- 電科大機(jī)器人研究中心研發(fā)出第四代外骨骼機(jī)器人 4951次閱讀
- 仿人機(jī)器人關(guān)鍵技術(shù)研究 5375次閱讀
- 機(jī)器人編程常用的四大語言 4.9w次閱讀
- 基于Arduino的會(huì)打招呼的超萌機(jī)器人 3311次閱讀
- 一篇文章帶您讀懂工業(yè)機(jī)器人的設(shè)計(jì)過程 2.8w次閱讀
下載排行
本周
- 1ADI高性能電源管理解決方案
- 2.43 MB | 449次下載 | 免費(fèi)
- 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 136次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 123次下載 | 免費(fèi)
- 4550W充電機(jī)原理圖
- 0.13 MB | 2次下載 | 6 積分
- 5USB的PD快充協(xié)議電壓誘騙控制器FS312A中文手冊
- 1.51 MB | 2次下載 | 免費(fèi)
- 6USB的PD和OC快充協(xié)議電壓誘騙控制器FS312B中文手冊
- 1.35 MB | 2次下載 | 免費(fèi)
- 7USB Type_C PD快充協(xié)議智能觸發(fā)芯片F(xiàn)S8025B應(yīng)用手冊
- 1.48 MB | 1次下載 | 免費(fèi)
- 8ADI公司串行端口開發(fā)和故障排除指南
- 343.09KB | 1次下載 | 免費(fèi)
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 449次下載 | 免費(fèi)
- 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 136次下載 | 1 積分
- 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
- 0.10 MB | 123次下載 | 免費(fèi)
- 4使用單片機(jī)實(shí)現(xiàn)七人表決器的程序和仿真資料免費(fèi)下載
- 2.96 MB | 44次下載 | 免費(fèi)
- 53314A函數(shù)發(fā)生器維修手冊
- 16.30 MB | 31次下載 | 免費(fèi)
- 6美的電磁爐維修手冊大全
- 1.56 MB | 22次下載 | 5 積分
- 7使用TL431設(shè)計(jì)電源
- 0.67 MB | 10次下載 | 免費(fèi)
- 8感應(yīng)筆電路圖
- 0.06 MB | 10次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191367次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73807次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評論
查看更多