OTTO like 已經預編行走與跳舞動作,進階玩家可以參考修改或新編動作,開啟 Motion_OTTO.h 檔案,可以看見下列內容:
const byte RUN_1[] PROGMEM = { // OTTO wave
// 0, 1, 2, 3, 4, 5, 6,
_SERVO, hof, hof, hof, hof, hof, hof, //0
_LOOP, 3, idl, idl, idl, idl, idl, //1
_SERVO, LR4, idl, RR4, idl, idl, idl, //2
_SERVO, LL4, idl, RL4, idl, idl, idl, //3
_NEXT, 3, idl, idl, idl, idl, idl, //4
_SERVO, LMD, LSD, RMD, RSD, idl, idl, //5
_LOOP, 3, idl, idl, idl, idl, idl, //6
_SERVO, hon, idl, hon, idl, idl, idl, //7
_NEXT, 2, idl, idl, idl, idl, idl, //8
_GOTO, 22, // goto RUN_N
};
const 代表常數設定
byte 資料是位元組型態
RUN_1[] 動作資料取名為 RUN_1 陣列
PROGMEM 資料儲存在 flash ROM
// 0, 1, 2, 3, 4, 5, 6,
// 左腿上肢 右腿上肢
// 左腿下肢 右腿下肢
_SERVO 設定 SG90 伺服馬達動作
hof SG90 hold off,參考 5.2 節
hon SG90 hold on
idl SG90 動作不變,也可以用它填滿未使用的記憶區塊
_LOOP, 3, idl, idl, idl, idl, idl, 迴圈內動作重複三次
XXXX
_NEXT, 3, idl, idl, idl, idl, idl, 迴圈結束,向上跳三行再執行
LR4, RR4, LL4, RL4, LMD, LSD, RMD, RSD SG90 角度設定
_GOTO, 22, 跳到第 22 號動作程序
從 ROSA_Main.cpp 可看到 *ACTIONS[] 動作程序表,第 22 號是 RUN_N
為什麼這些動作程序要使用像 LMD, LSD 之類奇怪的代碼,而不是直接填寫馬達角度數值呢? 因為更換馬達後,可能需要微調角度,使用代碼的話,只要修改 #define 就可以立即套用到整個 ROSA 程式,而不必逐行修改數值。代碼的意義詳見 ROSA 系統開發 57 所描述說明。
const byte *ACTIONS[] = {
RUN_N, // none,
RUN_1, // 1
RUN_2, // 2
RUN_3, // 3
RUN_4, // 4
RUN_5, // 5
RUN_6, // 6
RUN_7, // 7
RUN_8, // 8
RUN_9, // 9
RUN_0, // 0
// mBot KEYES CARMP3 AUDIO
RUN_S, // F * + >|
RUN_P, // A # - MENU
RUN_U, // up up EQ POWER
RUN_D, // down down FL- EQ
RUN_R, // right right CH+ CH+
RUN_L, // left left CH- CH-
RUN_K, // * OK FL+ RPT
RUN_18,// B >> >>
RUN_19,// C << <<
RUN_20,// D >| V-
RUN_21,// E CH V+
RUN_N,
};
沒有留言:
張貼留言