2016年3月30日 星期三
訓練數學感 93 ─ 操場周長多少?
2016年3月26日 星期六
ROSA 系統開發 31 ─ 再論 SoftwareSerial
本週開始將 SoftwareSerial 加入 ROSA,我先把它當作程式除錯使用,用它列印一些系統狀態,以方便了解程式執行到甚麼地方,不過並不太成功,今天留個紀錄,給有興趣的朋友參考。
原先我使用 Arduino IDE 1.6.3,在單一 ino 檔 #include <SoftwareSerial> 是 OK 的,不過現在程式拆成好幾個 cpp 後,想加入 SoftwareSerial,編譯程式總是回應找不到 SoftwareSerial.h 或是 SoftwareSerial.cpp,個人研判是系統編譯路徑出問題,之前 IDE 是 ZIP 下載沒安裝,因此改採安裝 IDE 1.6.8 才解決這問題。
現在藍牙是可以用,
2016年3月23日 星期三
2016年3月19日 星期六
ROSA 系統開發 30 ─ CARMP3 紅外線遙控器
自從 Daniel 加入後,給了 Pizg 和我許多好點子,其中一項就是 Spider 對戰,但是目前使用紅外線遙控器,最大的問題就是控制碼衝突,剛好最近在網路上看到另一支遙控器 CARMP3 有跟 Arduino 周邊搭售,從外觀來看,它主要應用於汽車 MP3 音響遙控,因此買來試看看。
// (C) 2015-2016, Bridan Wang, CC BY-NC-SA 3.0 TW
// Revised by Daniel Lu 2016/3/5
// ROSA_Spider 6 X 2 Servo Spider
// http://4rdp.blogspot.tw/search/label/ROSA%20(Arduino)
#define IR_KEYES // IR_MBOT // IR_AUDIO // IR_CARMP3 //
#ifdef IR_KEYES
const byte cIR_Code[] PROGMEM = {
// X, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *, #, up, dn, rt, lf, ok
255, 22, 25, 13, 12, 24, 94, 8, 28, 90, 82, 66, 74, 70, 21, 67, 68, 64
};
const byte *cActions[] = {
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
RUN_S, // *
RUN_P, // #
RUN_U, // up
RUN_D, // down
RUN_R, // right
RUN_L, // left
RUN_K // ok
};
#endif
#ifdef IR_CARMP3
const byte cIR_Code[] PROGMEM = {
// X, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F+, CH, C+, C-, >>, <<, >|, EQ, V-, V+, F-
255, 12, 24, 94, 8, 28, 90, 66, 82, 74, 22, 25, 70, 71, 69, 64, 68, 67, 9, 7, 21, 13,
};
const byte *cActions[] = {
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
RUN_S, // FL+
RUN_P, // CH
RUN_U, // CH+ up
RUN_D, // CH- down
RUN_R, // >> right
RUN_L, // << left
RUN_K, // >| OK
RUN_8, // EQ
RUN_7, // V-
RUN_9, // V+
RUN_N, // FL-
};
#endif
#ifdef IR_AUDIO
const byte cIR_Code[] PROGMEM = {
// X, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, PW, RP, C+, C-, >>, <<, >|, EQ, V-, V+, MU
255, 16, 17, 18, 20, 21, 22, 24, 25, 26, 12, 0, 4, 6, 5, 14, 13, 2, 8, 9, 10, 1,
};
const byte *cActions[] = {
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
RUN_S, // Power
RUN_P, // RP
RUN_U, // C+ up
RUN_D, // C- down
RUN_R, // >> right
RUN_L, // << left
RUN_K, // >| OK
RUN_8, // EQ
RUN_7, // V-
RUN_9, // V+
RUN_N, // MU
};
#endif
#ifdef IR_MBOT
const byte cIR_Code[] PROGMEM = {
// X, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, F, A, up, dn, rt, lf, *, B, C, D, E
255, 12, 24, 94, 8, 28, 90, 66, 82, 74, 22, 13, 69, 64, 25, 9, 7, 21, 70, 71, 68, 67,
};
const byte *cActions[] = {
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
RUN_S, // F
RUN_P, // A
RUN_U, // up
RUN_D, // down
RUN_R, // right
RUN_L, // left
RUN_K, // *
RUN_N, // B
RUN_N, // C
RUN_N, // D
RUN_N, // E
};
#endif
未來如果要蜘蛛對戰,以下是對四支紅外線遙控器按鍵安排的建議,盡量避免控制碼衝突:
2016年3月17日 星期四
2016年3月16日 星期三
2016年3月12日 星期六
ROSA 系統開發 29 ─ 搭檔程編
ROSA 開發至今,都是個人單打獨鬥,不過二月底,網友 Pizg 介紹 Daniel Lu 加入開發行列,他也擅長程式設計,因此我仍繼續負責嵌入式的 ROSA 作業系統,而他主要負責手機 APP 及 PC 應用程式,不過在 ROSA 還未加入遙控指令之前,Daniel 還沒辦法立即寫程式,因此他就先幫我 code review,把 ROSA 的 C 程式改成 C++ style,這讓我想起一篇舊文搭檔程編,採用此法的優點,可以讓程式碼的品質更佳。
2016年3月9日 星期三
訓練數學感 90 ─ 面積和多少?
2016年3月5日 星期六
ROSA 系統開發 28 ─ 指令讀入
// (C) 2015-2016, Bridan Wang, CC BY-NC-SA 3.0 TW
// http://4rdp.blogspot.tw/search/label/ROSA%20(Arduino)
#define NONE 0
static char cmd0[64] = "";
static char cmd1[64] = "";
static byte from;
char a;
char i;
if (cmd1[0] != NONE) return 1;
if (Serial.available() > 0) { // USB
from = 1;
a = Serial.read();
}
else if (BT.available() > 0) { // BT
from = 2;
a = BT.read();
}
else
return 0;
if (a != '\r' && a != '\n') {
cmd0[index_cmd++] = char(a);
cmd0[index_cmd] = 0;
return 0;
}
for (i = 0; i!=64 ; i++){
if ((cmd1[i] = toUpperCase(cmd0[i])) == NONE) break;
}
cmd0[0] = index_cmd = NONE;
if (cmd1[0] == NONE)
return 0;
else
return 1;
}
2016年3月2日 星期三
訓練數學感 89 ─ 四子連線問題(2)
截圖自赤子西瓜的圖形計算機繪圖 |
圍棋黑子連續四子以上視為一連線,可以直線、橫線、45度斜線,請問八顆子最多有幾條連線?九顆、十顆子又最多可以組合出幾條連線?