Skip to content
  • Add anything here or just remove it...
yesio.netyesio.net
  • yesio
  • GoSUMO相撲擂台
  • 創新應用與紀實
    • 2026太平洋盃X華紙公益
    • 2025華紙盃支援專頁
  • 應用速查
  • 獎項與肯定

dual2s基礎使用手冊

4
  • 【簡介】dual2s-mini控制器(2026)
  • 【簡介】dual2s-v2控制器(2025)
  • 【基礎】韌體程式學習 | How To
  • 【SWSP】dual2s快速應用系統

程式開發環境設定

3
  • 2026 競賽技術資料
  • dual2s函數庫與開發環境
  • 【進階】dual2s.h函數庫說明

Vibe - dual2s開發版

5
  • 【Vibe】Vibe教學,選用Agent還是Browser呢?
  • 【Vibe】U01. AI 寫韌體容易「翻車」,WHY?
  • 【Vibe】U02. 一位稱職的韌體架構師
  • 【Vibe】U03. 建立你的AI韌體助手/專屬家教
  • 【Vibe】U04. 硬體控制變換練習

ros32控制器

1
  • GoYak – 4Dof全向輪式智慧機器手臂

社群開源專題

9
  • 競賽/活動地圖開源模型說明
  • 【活動】地圖開源模型
  • 【機構】獨角仙主動防禦 / RhinoSUMO
  • 【GoSUMO】外掛套件_機械鏟
  • 【GoSUMO】外掛護甲_2023年式
  • 【車體】ezBot專題/dual2s/esp32
  • 【機構】GoARM組裝-社群創作版
  • 【GoSUMO】外掛護甲_2025年式
  • 【船體】aquaBot雙體船型/SDGs永續

競賽活動相關

2
  • 【活動】地圖開源模型
  • 2026 太平洋盃場地與設備

dual2s單元控制

12
  • 【顯示】狀態燈使用 | ws2812b
  • 【聲音】蜂鳴器 | buzzer
  • 【感測】超音波 | HCSR04
  • 【感測】近紅外線感測 – line | IR3CH
  • 【感測】近紅外線感測 – 相撲 | IR3CH
  • 【制動】DC馬達 | Motor
  • 【制動】舵機 MG995/SG90s | ServoMotor
  • 【感測】電壓監控 | Power
  • 【通訊】PS3搖桿 | PS3 GamePad
  • 【通訊】P3x搖桿控制MG995歸90度
  • 【運動】APP控制模式 | dual2s (2025)
  • 【運動】P3x搖桿(鎖址式) | dual2s (2025)

dual2s微專題

3
  • 【微專題】RFID門控基礎 / dual2s/mini
  • 【組裝】GoSUMO 組裝程序 2025
  • 【組裝】GoARM 2025 組裝程序
View Categories
  • Home
  • 應用速查
  • dual2s基礎使用手冊
  • dual2s單元控制
  • 【運動】APP控制模式 | dual2s (2025)

【運動】APP控制模式 | dual2s (2025)

3 min read

簡介 #

GoX系列機器人(GoSUMO、GoARM、GoJoga足球….)的核心控制器為dual2s。我們提供的程式範例中,控制GoX系列機器人的通訊模式主要有三種:【APP控制模式、PS2x控制模式(速配式)、PS3x控制模式(鎖址式)】,如圖所示。

👉本單元將針對【APP控制模式】提供程式範例。


APP程式範例資源 #

APP資源下載 #

  • Android智慧裝置(手機、平板)直接下載安裝:【APK下載安裝】。
  • APP公版程式完整包:【下載開發】。

GoX輪型運動基礎概念 #


APP控制架構 #

撰寫程式之前,先建立兩端(APP、dual2s控制器)之間的控制命令關係,如圖,APP每個按鍵各自定義著獨有的【控制字元/字母】,透過【控制字元】協定GoX機器人的指定運動,例如前進、後退、抬手臂、夾爪閉合…等運動。


積木程式 – 【抓地胎】模式 #

我們基於yesioBlockly積木程式編輯器,提供此程式範例(XML)【抓地胎-APP模式,程式傳送門】。


積木程式 – 【麥克納姆輪】模式 #

我們基於yesioBlockly積木程式編輯器,提供此程式範例(XML)【麥克納姆輪-APP模式,程式傳送門】。


Arduino C語言 #

我們提供完整的程式範例,將dual2s函數庫匯入ArduinoIDE編輯器後(請參考此文),在範例可找到相關檔案,👉檔名:dual2s_Bluetooth.ino,如下圖。

#include <dual2s.h>
#include "BluetoothSerial.h"

//DC電機GPIO
#define PIN_MOTO_1A  14
#define PIN_MOTO_1B  32
#define PIN_MOTO_2A  12
#define PIN_MOTO_2B  33
#define PIN_MOTO_3A  25
#define PIN_MOTO_3B  26
#define PIN_MOTO_4A  23
#define PIN_MOTO_4B  22

//蜂鳴器GPIO
#define PIN_BUZZER   15

//超音波GPIO
#define PIN_USC_FRONT_ECHO 13
#define PIN_USC_FRONT_TRIG 27
#define PIN_USC_RIGHT_ECHO 5
#define PIN_USC_RIGHT_TRIG 4
#define PIN_USC_LEFT_ECHO 19
#define PIN_USC_LEFT_TRIG 18

//短距紅外線GPIO
#define PIN_IR_LEFT    34
#define PIN_IR_MIDDLE  35
#define PIN_IR_RIGHT   39

//供電偵測GPIO
#define PIN_BATTERY    36

//預設使用的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

BluetoothSerial SerialBT;  //藍牙串列物件 
char BTCMD[3] = {0};  //儲存藍牙串列接收到的指令
int PWMspeed = 950;  //儲存藍牙串列接收到的PWM speed數值
int SeekCnt = 0;

GoSUMO gs;
Buzzer bz(PIN_BUZZER, PWM_CH_BUZZER);
Power  volt(PIN_BATTERY);
IR3CH  ir(PIN_IR_LEFT, PIN_IR_MIDDLE, PIN_IR_RIGHT);
HCSR04 us_F(PIN_USC_FRONT_ECHO, PIN_USC_FRONT_TRIG);
HCSR04 us_R(PIN_USC_RIGHT_ECHO, PIN_USC_RIGHT_TRIG);
HCSR04 us_L(PIN_USC_LEFT_ECHO, PIN_USC_LEFT_TRIG);


void setup(){
  Serial.begin(115200);
  SerialBT.begin("yesio10");  //啟動藍牙串列並設定藍牙裝置名稱
  bz.alarm();
}

void loop(){
  if (Serial.available()) { SerialBT.write(Serial.read());  }
  if (SerialBT.available()) {
    int i;
    for (i=0; i<4; i++){ BTCMD[i] = SerialBT.read(); } 
  }
  if(atoi(BTCMD)>1) { PWMspeed = atoi(BTCMD);}
  BTCMD[0] = 'D';
  if(BTCMD[0] == 'F') { gs.act(GoSUMO::FORWARD, PWMspeed); }           //GoSUMO 前進 
  else if(BTCMD[0] == 'B') { gs.act(GoSUMO::BACKWARD, PWMspeed); }     //GoSUMO 後退 
  else if(BTCMD[0] == 'L') { gs.act(GoSUMO::GO_LEFT, PWMspeed); }      //GoSUMO 左旋轉
  else if(BTCMD[0] == 'R') { gs.act(GoSUMO::GO_RIGHT, PWMspeed); }     //GoSUMO 右旋轉

  else if(BTCMD[0] == 'l') { gs.act(GoSUMO::L_TVL, PWMspeed); }        //GoSUMO 左橫移 
  else if(BTCMD[0] == 'r') { gs.act(GoSUMO::R_TVL, PWMspeed); }        //GoSUMO 右橫移
  else if(BTCMD[0] == 'q') { gs.act(GoSUMO::RF_TVL, PWMspeed); }       //GoSUMO 右前橫移  
  else if(BTCMD[0] == 'e') { gs.act(GoSUMO::LB_TVL, PWMspeed); }       //GoSUMO 左後橫移 
  else if(BTCMD[0] == 'w') { gs.act(GoSUMO::LF_TVL, PWMspeed); }       //GoSUMO 左前橫移 
  else if(BTCMD[0] == 't') { gs.act(GoSUMO::RB_TVL, PWMspeed); }       //GoSUMO 右後橫移 

  else if(BTCMD[0] == 'Z') { gs.stop(); }
  else if(BTCMD[0] == 'H') { bz.alarm(); }
/*Servo Control, start here. */  
  else if(BTCMD[0] == 'A') {   }	//ServoBase Rising
  else if(BTCMD[0] == 'a') {   }	//ServoBase Declining
  else if(BTCMD[0] == 'P') {   }	//ServoPaw OPEN
  else if(BTCMD[0] == 'p') {   }	//ServoPaw CLOSE
  else if(BTCMD[0] == 'z') {   }  //ARM Homing
  else if(BTCMD[0] == 'C') { 
    Serial.print(us_F.ObjDistance());
    Serial.print(", ");  
    Serial.print(us_R.ObjDistance());
    Serial.print(", ");  
    Serial.println(us_L.ObjDistance());  
    delay(500);
    Serial.println("--");  
  }
  else if(BTCMD[0] == 'y') { 
    Serial.println(ir.ReadTCRT(1000, 1)); 
    delay(1000);  
  }
}
Updated on 24 8 月, 2026

What are your Feelings

  • Happy
  • Normal
  • Sad

Share This Article :

  • Facebook
  • X
  • LinkedIn
  • Pinterest
【通訊】P3x搖桿控制MG995歸90度【運動】P3x搖桿(鎖址式) | dual2s (2025)

Powered by BetterDocs

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

大綱 outlines
  • 簡介
  • APP程式範例資源
  • APP資源下載
  • GoX輪型運動基礎概念
  • APP控制架構
  • 積木程式 - 【抓地胎】模式
  • 積木程式 - 【麥克納姆輪】模式
  • Arduino C語言
Copyright 2026 © 宏川智控有限公司
  • yesio
  • GoSUMO相撲擂台
  • 創新應用與紀實
    • 2026太平洋盃X華紙公益
    • 2025華紙盃支援專頁
  • 應用速查
  • 獎項與肯定
  • -
  • Newsletter