首先介紹控制伺服馬達的模組。
PS2類比搖桿。
這是PS2上面的香菇頭搖桿。
五根PIN : DC+-5V、XPIN、YPIN、SW。
XPIN、YPIN就把他想成兩個10K的可變電阻就好了,可控制類比訊號。
而伺服馬達控制位置就是要使用類比搖桿,都說類比搖桿了,XY當然要接到類比(Analog)插
座。
伺服馬達SG90,又稱9G舵機。
既然搖桿是兩個可變電阻組成,我當然會使用兩個以上伺服馬達控制,
後來想一想,除了搖桿控制外,加個按鍵讓它有固定的轉法。
就變下圖這樣,多一個觸控按鍵,按一下給個HIGH,觸發邏輯。
來看影片。
一、用搖桿操控兩軸伺服馬達。
二、第一個觸控按鍵讓兩軸馬達一起轉90度。
程式如下 :
#include<Servo.h >
Servo servo1;
Servo servo2;
const int push=3;
const int pinX = A0;
const int pinY = A1;
int valX, posX;
int valY, posY;
int i = 0;
//落落長的宣告就不說了。
void setup()
{
servo1.attach(8);
servo2.attach(9);
pinMode(push,INPUT);
}
//落落長的定義也不說了。
void loop()
{
if(digitalRead(push)==HIGH){
for(i = 30; i < 120; i += 1)
{
servo1.write(i);
servo2.write(i);
delay(15);
}
for(i = 120; i>=30; i-=1)
{
servo1.write(i);
servo2.write(i);
delay(15);
}
}
//按鍵讓兩個伺服馬達從30度轉到120度再轉回來。
valX = analogRead(pinX);
valY = analogRead(pinY);
posX = map(valX, 0, 1023, 0, 179);
posY = map(valY, 0, 1023, 0, 179);
//可變電阻類比值0~1023轉換成角度0~179度,因為這顆伺服馬達極限只能轉180度。
//兩伺服馬達轉的角度和方向我是寫一樣,可各自更改方向角度,會有不一樣的轉法。
servo1.write(posX);
servo2.write(posY);
//伺服馬達啟動。
delay(15);
}
其實我很想買那種1千2千的機械手臂來玩看看,可是真的很花錢。
沒有留言:
張貼留言