2018年1月20日 星期六

Arduino (2) PS2類比搖桿+雙軸伺服馬達SG90。

伺服馬達就是一種玩具關節,一個馬達就是一個關節。

首先介紹控制伺服馬達的模組。



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千的機械手臂來玩看看,可是真的很花錢。



沒有留言:

張貼留言

8051 (6) 紅外線避障模組控制LED七段顯示器。

這篇要做的Project就是感測器測到訊號時,LED七段顯示器會開始計算偵測次數, 到第5次時會讓紅色LED燈發光。 程式如下: #include <reg52.h> unsigned char seg[5]={0xf9,...