How can we help you today?
【通訊】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()
{
}