電路圖
這個(gè)項(xiàng)目的硬件部分非常容易制作。首先,將操縱桿模塊與Arduino連接。操縱桿模塊和Arduino的連接如下:
將操縱桿模塊上的VCC與Arduino上的5V引腳連接
將操縱桿模塊上的GND引腳與Arduino上的GND連接
將操縱桿模塊上的VER引腳與Arduino上的A0連接
將操縱桿模塊上的HOR引腳與Arduino上的A1連接
然后,將伺服電機(jī)與Arduino連接。使用Arduino的伺服電機(jī)的連接如下:
將兩個(gè)伺服電機(jī)上的黑線連接到Arduino上的GND
將兩個(gè)伺服電機(jī)上的紅線連接到Arduino上的5V引腳
將第一個(gè)電機(jī)上的黃色線連接到Arduino上的引腳8
將第二個(gè)電機(jī)上的黃色線連接到Arduino上的引腳9
它是如何工作的?
當(dāng)操縱桿模塊在水平或垂直方向上移動(dòng),它給出0到1023之間的值。因此我們可以在代碼中應(yīng)用一個(gè)條件,如果該值小于300或大于700,則伺服器將移動(dòng)。
當(dāng)操縱桿沿水平方向移動(dòng)時(shí),第一個(gè)伺服器將向右或向左移動(dòng),并在移動(dòng)樂(lè)趣時(shí)移動(dòng)在垂直方向上打勾,第二個(gè)伺服將向右或向左移動(dòng)。
Arduino代碼
#include
Servo servo1;
Servo servo2;
int x_key = A1;
int y_key = A0;
int x_pos;
int y_pos;
int servo1_pin = 8;
int servo2_pin = 9;
int initial_position = 90;
int initial_position1 = 90;
void setup ( ) {
Serial.begin (9600) ;
servo1.attach (servo1_pin ) ;
servo2.attach (servo2_pin ) ;
servo1.write (initial_position);
servo2.write (initial_position1);
pinMode (x_key, INPUT) ;
pinMode (y_key, INPUT) ;
}
void loop ( ) {
y_pos = analogRead (y_key) ;
if (x_pos 《 300){
if (initial_position 《 10) { } else{ initial_position = initial_position - 20; servo1.write ( initial_position ) ; delay (100) ; } } if (x_pos 》 700){
if (initial_position 》 180)
{
}
else{
initial_position = initial_position + 20;
servo1.write ( initial_position ) ;
delay (100) ;
}
}
if (y_pos 《 300){
if (initial_position1 《 10) { } else{ initial_position1 = initial_position1 - 20; servo2.write ( initial_position1 ) ; delay (100) ; } } if (y_pos 》 700){
if (initial_position1 》 180)
{
}
else{
initial_position1 = initial_position1 + 20;
servo2.write ( initial_position1 ) ;
delay (100) ;
}
}
}
代碼說(shuō)明
首先,我們加入了伺服電機(jī)庫(kù),這將有助于我們簡(jiǎn)化代碼。然后,我們初始化了兩個(gè)變量,一個(gè)用于兩個(gè)伺服電機(jī)中的每一個(gè),這將有助于我們使用庫(kù)函數(shù)。
#include
Servo servo1;
Servo servo2;
然后,我們將引腳初始化我們連接了操縱桿模塊上的垂直和水平引腳以及伺服系統(tǒng)上的信號(hào)引腳。
int x_key = A1;
int y_key = A0;
int x_pos;
int y_pos;
int servo1_pin = 8;
int servo2_pin = 9;
int initial_position = 90;
int initial_position1 = 90;
然后我們告訴Arduino我們連接了伺服引腳并移動(dòng)了伺服電機(jī)在初始位置,即90度。之后,我們將操縱桿模塊上的垂直和水平引腳都聲明為輸入引腳。
servo1.attach (servo1_pin ) ;
servo2.attach (servo2_pin ) ;
servo1.write (initial_position);
servo2.write (initial_position1);
pinMode (x_key, INPUT) ;
pinMode (y_key, INPUT) ;
在循環(huán)函數(shù)中,我們從操縱桿模塊中讀取水平和垂直位置的值并將這些保存在變量中。然后我們應(yīng)用了一個(gè)條件,如果水平位置的值小于300,那么第一個(gè)伺服將向右移動(dòng)。
x_pos = analogRead (x_key) ;
y_pos = analogRead (y_key) ;
if (x_pos 《 300){
if (initial_position 《 10)
{
}
else{
initial_position = initial_position - 20;
servo1.write ( initial_position ) ;
delay (100) ;
}
}
如果水平位置的值大于700 ,然后伺服將向左移動(dòng)。類(lèi)似地,對(duì)于操縱桿模塊的垂直位置,如果該值小于300,則第二伺服將向左移動(dòng),如果該值大于700,則第二伺服將向右移動(dòng)。
if (x_pos 》 700){
if (initial_position 》 180)
{
}
else{
initial_position = initial_position + 20;
servo1.write ( initial_position ) ;
delay (100) ;
}
}
-
伺服電機(jī)
+關(guān)注
關(guān)注
85文章
2060瀏覽量
58260 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187956 -
操縱桿
+關(guān)注
關(guān)注
0文章
69瀏覽量
8588
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論