< All Topics
Print

【通訊】P3x搖桿控制MG995歸90度

簡介

隨著GoX機器人工作的目標物越加複雜、競賽項目越加多元,伺服馬達成了經常使用的致動器(actuator)之一,MG995是一款容易取得的伺服馬達,我們以MG995為使用範例。

為了配合機構運動角度,MG995組裝前必須先將轉軸角度回歸90度,精確做法是運用程式控制方式令MG995轉動至90度。


範例程式

此單元,我們將實作:

  • 當按下P3x搖桿上的【R1鍵】時,即通知dual2s控制MG995轉動90度的動作。
  • 當按下P3x搖桿上的【△鍵】時,即通知dual2s控制MG995轉動30度的動作。
  • 當按下P3x搖桿上的【X鍵】時,即通知dual2s控制MG995轉動140度的動作。

積木程式範例

本範例下載傳送門,👉【XML檔案】。


Arduino C 程式範例

#include <dual2s.h>
#include <Ps3Controller.h>
#include <Servo.h>

//蜂鳴器GPIO
#define PIN_BUZZER   15

//預設使用的PWM通道
#define PWM_CH_BUZZER 7
#define PWM_CH_M1A    8
#define PWM_CH_M1B    9
#define PWM_CH_M2A    10
#define PWM_CH_M2B    11
#define PWM_CH_M3A    12
#define PWM_CH_M3B    13
#define PWM_CH_M4A    14
#define PWM_CH_M4B    15

Buzzer bz(PIN_BUZZER, PWM_CH_BUZZER);
Servo Joga;
unsigned long lastRecTime_P3x = 0;  // 記錄上次收到 PS3 訊號的時間

// 描述此函式...
void onConnect() {
  bz.alarm();
}

// 描述此函式...
void notify() {
  if (Ps3.data.button.r1) {
    Joga.write(90);
  }
  if (Ps3.data.button.cross) {
    Joga.write(30);
  }
  if (Ps3.data.button.triangle) {
    Joga.write(140);
  }
}

void setup()
{
  Joga.attach(18);
  Ps3.begin("20:00:00:00:43:85");  // 啟動 P3x搖桿的藍牙位址
  Ps3.attach(notify); //設定按鍵變更時的回呼函式
  bz.alarm();
}

void loop()
{
}
Table of Contents