2016年2月27日 星期六

ROSA 系統開發 27 ─ P&B Spider 的材料清單及組裝注意事項

http://4rdp.blogspot.tw/2016/02/rosa-27-p-spider.html

越來越多人詢問 P&B Spider 材料清單以及嘗試組裝,另外機器蜘蛛零組件不是很多,不過組裝它還是有些事情需要注意,因此本文一併說明。

P&B Spider 的電子材料清單如下:
一、主控板  Arduino Uno R3  x 1  含 USB cable  x 1
ROSA 作業系統需下載到 Arduino 主控板執行
ArduinoUno_R3_Front_450px.jpg
USB cable 除了可以從 PC 下載編譯後的韌體到 Arduino 之外,
執行程式時,它從行動電源提供電力給主控板。
USBCable.jpg
二、傳感器擴充板 Arduino Sensor Shield V5  x 1
把它插在主控板上,然後 SG90 馬達及紅外線遙控器可以直接插接在上面


三、雙孔 USB 行動電源 (Output 5V 2.1A) x 1

2016年2月24日 星期三

訓練數學感 88 ─ 維修排程問題

http://4rdp.blogspot.tw/2016/02/88.html

圖片來源 https://pixabay.com/
工廠有兩位工程師,但同時來了五件故障品需要維修,它們所要修理的時間,A 需要 10 分鐘,B 需要 12 分鐘,C 需要 15 分鐘,D 需要 20 分鐘,E 需要 24 分鐘,請問如何安排修理順序,可使這五件故障品修理及等候總和時間最短?

2016年2月20日 星期六

ROSA 系統開發 26 ─ P&B 6x2 Spider 妖怪手錶體操舞

http://4rdp.blogspot.tw/2016/02/rosa-26-p-6x2-spider.html



P&B 6x2 Spider 妖怪手錶體操舞

續前文,在沒有動作編輯軟體的幫忙下,終於編出一段 66 秒妖怪手錶體操舞,舞不好編原因很多,例如跳舞動作要慢動作一看再看影片擷取精華,並且機器蜘蛛形體不同於人體,許多地方要修改,也許日後製作人形機器人就可以完全仿製動作更為傳神。

親自編舞之後,也可以更加了解,編舞創作者需要什麼工具與功能,才能提升創作速度,畢竟一般人耐性有限,過度繁雜的事,多數人容易半途而廢,現在 ROSA 有了 TEMPO 及 DANCE 指令,就很容易精準控制節拍,不用安插多餘的等待指令,並且快動作、慢動作自動配合節拍調整速度,讓舞蹈動作編輯簡單許多,這就是使用 ROSA 並且沒有動作編輯軟體,也很容易精準編舞創作。

// (C) 2015, Bridan Wang, CC BY-NC-SA 3.0 TW
// http://4rdp.blogspot.tw/search/label/ROSA%20(Arduino)


#define zeo 0           // zero
#define lif 45          // lift leg
#define ris 135         // rise leg
#define std 90          // stand
#define hon 251         // hold on
#define hof 250         // hold off
#define fwd 60          // forward
#define mid 90          // middle
#define bck 120         // backward
#define fd5 45          // forward 45
#define bk5 135         // backward 135
#define fd0 30          // forward 30
#define bk0 150         // backward 150

const byte RUN_5[] PROGMEM = {
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12  
_TEMPO,  50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //0
_DANCE, fd5, zeo, fd5, zeo, fwd, std, fwd, std, mid, std, mid, std,   //1  14-17
_DANCE, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //2
_LOOP,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //3
_DANCE, 255, lif, 255, lif, 255, 255, 255, 255, 255, 255, 255, 255,   //4
_DANCE, 255, zeo, 255, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //5
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //6
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12  
_LOOP,    2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //7
_DANCE, 255, zeo, 255, zeo, mid, 255, fd0, 255, bck, 255, fwd, 255,   //8  17-25
_DANCE, 255, lif, 255, lif, 255, 255, 255, 255, 255, 255, 255, 255,   //9
_DANCE, 255, zeo, 255, zeo, fd0, 255, mid, 255, fwd, 255, bck, 255,   //10
_DANCE, 255, lif, 255, lif, 255, 255, 255, 255, 255, 255, 255, 255,   //11
_DANCE, 255, zeo, 255, zeo, fwd, 255, fwd, 255, mid, bck, mid, bck,   //12
_DANCE, 255, lif, 255, lif, 255, 255, 255, 255, 255, std, 255, std,   //13
_DANCE, 255, zeo, 255, zeo, 255, 255, 255, 255, 255, bck, 255, bck,   //14
_DANCE, 255, lif, 255, lif, 255, 255, 255, 255, 255, std, 255, std,   //15
_NEXT,    9, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //16
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12  
_DANCE, 255, lif, 255, zeo, mid, std, mid, std, fd5, hon, fd5, hon,   //17 25-29
_LOOP,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //18
_DANCE, 255, 255, mid, 255, 255, hon, 255, hon, 255,  70, 255, 110,   //19
_DANCE, 255, 255, fd5, 255, 255, hon, 255, hon, 255, 110, 255,  70,   //20
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //21 
_DANCE, fd5, zeo, fd5, zeo, fwd, std, fwd, std, mid, std, mid, std,   //22  
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12  
_TEMPO,  25, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //23 29-33
_LOOP,    2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //24
_DANCE, fd5, zeo, bk5, zeo, fwd, std, fwd, std, 255, std, 255, std,   //25 
_DANCE, 255, 255, 255, lif, 255, hon, 255, hon, 255, 255, 255, 255,   //26
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //27
_LOOP,    2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //28
_DANCE, mid, zeo, fd5, zeo, 255, 255, 255, 255, 255, std, 255, std,   //29
_DANCE, 255, lif, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //30
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //31
_LOOP,    2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //32
_DANCE, fd5, zeo, mid, zeo, 255, 255, 255, 255, 255, std, 255, std,   //33 
_DANCE, 255, 255, 255, lif, 255, 255, 255, 255, 255, 255, 255, 255,   //34
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //35
_DANCE, bk5, zeo, fd5, zeo, mid, std, mid, std, mid, std, mid, std,   //36
_DANCE, fd5, zeo, bk5, zeo, 255, hon, 255, hon, mid, hon, mid, hon,   //37
_DANCE, bk5, zeo, fd5, zeo, 255, 255, 255, 255, mid, 255, mid, 255,   //38
_DANCE, bk5, lif, bk5, lif, mid, std, mid, std, fd5, 255, fd5, 255,   //39
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12  
_LOOP,   12, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //40 33-37
_DANCE, bk5, 100, bk5,  80, mid, 100, mid,  80, fd5, 100, fd5,  80,   //41 
_DANCE, hon,  80, hon, 100, hon,  80, hon, 100, hon,  80, hon, 100,   //42
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //43
_TEMPO,  50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //44
_DANCE, bk5, zeo, fd5, zeo, 255, std, 255, std, 255, std, 255, std,   //45
_DANCE, fd5, zeo, bk5, zeo, 255, std, 255, std, 255, std, 255, std,   //46
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12  
_LOOP,    2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //47
_DANCE, fd5, zeo, fd5, zeo, mid, std, mid, std, mid, std, mid, std,   //48 37-41
_DANCE, 255, std, 255, std, 255, 255, 255, 255, 255, 255, 255, 255,   //49
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //50
_DANCE, bk5, bk5, bk5, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //51
_DANCE, 255, bk5, 255, lif, 255, 255, 255, 255, 255, 255, 255, 255,   //52
_DANCE, 255, bk5, 255, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //53
_DANCE, 255, bk5, 255, bk5, 255, 255, 255, 255, 255, 255, 255, 255,   //54
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12 
_DANCE, bk5, zeo, bk5, bk5, 255, 255, 255, 255, 255, 255, 255, 255,   //55 41-45
_DANCE, 255, lif, 255, bk5, 255, 255, 255, 255, 255, 255, 255, 255,   //56
_DANCE, 255, zeo, 255, bk5, 255, 255, 255, 255, 255, 255, 255, 255,   //57
_DANCE, 255, bk5, 255, bk5, 255, 255, 255, 255, 255, 255, 255, 255,   //58
_TEMPO, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //59
_DANCE, bk5, bk5, zeo, bk5, 255, 255, 255, 255, 255, 255, 255, 255,   //60
_DANCE, bk5, zeo, bk5, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //61
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12 
_DANCE, zeo, bk5, bk5, bk5, 255, 255, 255, 255, 255, 255, 255, 255,   //62 45-51
_DANCE, bk5, zeo, bk5, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //63
_LOOP,    2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //64
_DANCE, fd5, lif, fd5, lif, 255, 255, 255, 255, 255, bck, 255, bck,   //65
_DANCE, fd5, zeo, fd5, zeo, 255, 255, 255, 255, 255, std, 255, std,   //66
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, hon, 255, hon,   //67
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12 
_TEMPO,  25, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //68
_LOOP,    2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //69
_DANCE, mid, std, mid, zeo, 255, zeo, 255, std, 255, std, 255, std,   //70 51-53
_DANCE, mid, std, mid, std, 255, std, 255, std, 255, std, 255, std,   //71
_DANCE, mid, zeo, mid, std, 255, std, 255, zeo, 255, std, 255, std,   //72
_DANCE, mid, std, mid, std, 255, std, 255, std, 255, std, 255, std,   //73
_NEXT,    5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //74
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12 
_TEMPO,  50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //75
_DANCE, mid, std, mid, zeo, 255, zeo, 255, std, 255, std, 255, std,   //76 53-57
_DANCE, mid, std, mid, std, 255, std, 255, std, 255, std, 255, std,   //77
_TEMPO,  25, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //78
_LOOP,    5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //79
_DANCE, bk5, 100, bk5,  80, mid, 100, mid,  80, fd5, 100, fd5,  80,   //80 
_DANCE, hon,  80, hon, 100, hon,  80, hon, 100, hon,  80, hon, 100,   //81
_NEXT,    3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //82
_DANCE, bk5, 100, bk5,  80, mid, 100, mid,  80, fd5, 100, fd5,  80,   //83 
_DANCE, mid, zeo, mid, zeo, mid, std, mid, std, mid, std, mid, std,   //84
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12 
_TEMPO,  50, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //85
_DANCE, fd0, zeo, bk5, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //86 57-61
_DANCE, fd5, zeo, mid, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //87
_DANCE, mid, zeo, fd5, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //88
_DANCE, fd5, zeo, fd5, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //89
_TEMPO, 100, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //90
_DANCE, fd0, std, bk5, std, 255, 255, 255, 255, 255, 255, 255, 255,   //91
_DANCE, fd0, bk5, fd5, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //92
//   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12 
_DANCE, 255, 255, 255, lif, 255, 255, 255, 255, 255, 255, 255, 255,   //93 61-66
_DANCE, 255, 255, 255, zeo, 255, 255, 255, 255, 255, 255, 255, 255,   //94
_TEMPO,  10, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //95
_LOOP,    8, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //96
_DANCE, fd0, std, fd0, std, bk0, std, bk0, std, fd0, std, fd0, std,   //97
_DANCE, bk0, lif, bk0, hon, fd0, hon, fd0, lif, bk0, lif, bk0, hon,   //98
_DANCE, hon, std, hon, std, hon, std, hon, std, hon, std, hon, std,   //99
_DANCE, fd0, hon, fd0, lif, bk0, lif, bk0, hon, fd0, hon, fd0, lif,   //100
_NEXT,    5, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,   //101
_GOTO, 212,                              // goto RUN_P
};

2016年2月17日 星期三

台灣雲端書庫

http://4rdp.blogspot.tw/2016/02/blog-post_17.html

曹永忠老師的電子書
這篇文章去年就想寫了,直到現在完成貼文,是因為看到靜宜大學曹永忠老師在 Arduino.Taiwan 臉書貼文提到台灣雲端書庫,才想起這篇文章還沒發出去。

以前網路不發達時經常買書閱讀,現在人手一支手機或平板改成滑臉書,使得實體書店一家一家關,也難怪曹老師感嘆書籍創作越來越沒價值,而且科技類書籍沒有小說熱門。

我很擔心

2016年2月13日 星期六

ROSA 系統開發 25 ─ 舞蹈節奏控制 (Tempo & Dance)

http://4rdp.blogspot.tw/2016/02/rosa-25-tempo-dance.html


妖怪手錶體操舞

過年放假時間較多,想幫 P&B Spider 加一些有趣的動作,所以想試看看能不能讓機器蜘蛛跳個舞,最近很紅的舞曲是日本任天堂的妖怪手錶,看過影片以及聽了音樂後,分析它的節奏是一秒鐘一拍,回頭看 ROSA 的動作編輯,還欠缺一個時間同步,少了它,動作與音樂會對不起來,解決辦法之一就是把時間填滿,例如某個動作需半拍,而馬達旋轉花了 0.4 秒,那就要插入 0.1 秒等待指令,可是這是做苦工的方法,一旦馬達轉速或角度調整後,等待的時間也要一同修改,這樣逐一修改是很費時的。

因此,我決定在 ROSA 的動作程序裡追加 TEMPO 與 DANCE 兩個指令,這樣做的優點可以減少程序記憶空間耗用,如果每行動作程序都加一個時間欄,一百個動作就會增加 100 bytes 記憶體耗用,而增加指令雖增加處理程式,但耗用程序記憶體並不多。TEMPO 指令設定音樂一拍所需的時間,時間單位為 10 ms,數值範圍 0 ~ 255,DANCE 指令基本上同 SERVO,但它會自動調速,讓每顆伺服馬達動作盡量均速,不會讓馬達很快轉到定位後就停在那裏,空耗時間,例如一號馬達半拍轉 50 度角與二號馬達半拍轉 20 度角,兩者速度就是不一樣,那麼看看程式如何設計可以達成這些功能。

// (C) 2015, Bridan Wang, CC BY-NC-SA 3.0 TW
// http://4rdp.blogspot.tw/search/label/ROSA%20(Arduino)


byte servo_pin[] =
{ 0, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17 };
byte servo_revse[] =
{ 0, 0, 1, 1, 0, 0,  1,  1,  0,  0,  1,  1,  0 };  // 6x2-2

enum {
  _NONE,
  _DANCE,
  _GOTO,
  _HOLD,
  _LOOP,
  _NEXT,
  _RETURN,
  _SERVO,
  _SPEED,
  _STOP,
  _TEMPO,
  _WAIT,
};

byte tempo;
byte tempo_set;
unsigned int tempo_time;

2016年2月10日 星期三

訓練數學感 87 ─ 四子三連線

http://4rdp.blogspot.tw/2016/02/87.html

猴年開春祝大家事事如意,也期望台南永康維冠震災能救援快速與順利。

這題就像五子棋一樣,在圍棋盤上只要四子就可以一連線,可以直線、橫線、45度斜線,請問最少需要幾顆子可以排列三連線?這是單人遊戲,只用一色棋子即可。

2016年2月6日 星期六

ROSA 系統開發 24 ─ 以軟體序列埠程式連接 Arduino 藍芽通訊

http://4rdp.blogspot.tw/2016/02/rosa-24-arduino.html

雖然在 ROSA 系統開發 21 已經說明 HC-05 藍牙連線,但是這個方法會佔用 Arduino 的 pin 0 及 1,它是會影響 Arduino 程式的 USB 燒錄,如果你有多餘的空腳,可以改用軟體序列埠程式連接 Arduino 藍芽通訊,它會使用 Arduino 兩隻 IO 腳,本文選用 pin 3 及 13,












// (C) 2015-2016, Bridan Wang, CC BY-NC-SA 3.0 TW
// http://4rdp.blogspot.tw/search/label/ROSA%20(Arduino)

#include "SoftwareSerial.h"
SoftwareSerial BT(3,13);      // pin 3 RX   pin 13 TX

void setup(void) {
  BT.begin(9600);      // max 57600
}

void loop()
{
  if (BT.available())
    BT.write(BT.read());
}

2016年2月3日 星期三

訓練數學感 86 ─ 平衡與傾倒

http://4rdp.blogspot.tw/2016/02/86.html

任何長柱體立於平面,只要適當地施加外力必會傾倒,試問高寬比 4:1 的長柱體,要傾斜幾度以上才會倒?