電路圖
這個項目的硬件部分非常容易制作。首先,將操縱桿模塊與Arduino連接。操縱桿模塊和Arduino的連接如下:
將操縱桿模塊上的VCC與Arduino上的5V引腳連接
將操縱桿模塊上的GND引腳與Arduino上的GND連接
將操縱桿模塊上的VER引腳與Arduino上的A0連接
將操縱桿模塊上的HOR引腳與Arduino上的A1連接
然后,將伺服電機與Arduino連接。使用Arduino的伺服電機的連接如下:
將兩個伺服電機上的黑線連接到Arduino上的GND
將兩個伺服電機上的紅線連接到Arduino上的5V引腳
將第一個電機上的黃色線連接到Arduino上的引腳8
將第二個電機上的黃色線連接到Arduino上的引腳9
它是如何工作的?
當操縱桿模塊在水平或垂直方向上移動,它給出0到1023之間的值。因此我們可以在代碼中應用一個條件,如果該值小于300或大于700,則伺服器將移動。
當操縱桿沿水平方向移動時,第一個伺服器將向右或向左移動,并在移動樂趣時移動在垂直方向上打勾,第二個伺服將向右或向左移動。
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) ;
}
}
}
代碼說明
首先,我們加入了伺服電機庫,這將有助于我們簡化代碼。然后,我們初始化了兩個變量,一個用于兩個伺服電機中的每一個,這將有助于我們使用庫函數。
#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;
然后我們告訴Arduino我們連接了伺服引腳并移動了伺服電機在初始位置,即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) ;
在循環函數中,我們從操縱桿模塊中讀取水平和垂直位置的值并將這些保存在變量中。然后我們應用了一個條件,如果水平位置的值小于300,那么第一個伺服將向右移動。
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 ,然后伺服將向左移動。類似地,對于操縱桿模塊的垂直位置,如果該值小于300,則第二伺服將向左移動,如果該值大于700,則第二伺服將向右移動。
if (x_pos 》 700){
if (initial_position 》 180)
{
}
else{
initial_position = initial_position + 20;
servo1.write ( initial_position ) ;
delay (100) ;
}
}
-
伺服電機
+關注
關注
85文章
2028瀏覽量
57699 -
Arduino
+關注
關注
187文章
6464瀏覽量
186645 -
操縱桿
+關注
關注
0文章
67瀏覽量
8519
發布評論請先 登錄
相關推薦
評論