2010年3月31日 星期三

把 UIView 內容輸出到 UIImage 的方法

//  Convert existing UIView to UIImage
UIGraphicsBeginImageContext(self.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

2010年3月29日 星期一

iPhone Pinout

2010年3月28日 星期日

AMIGO Mini PS2 手掣操控測試(Analog Mode)


完成了 Digital Mode 之後,要支援 Analog Mode 便容易得多。兩者之間的分別在於 PS2 手掣傳回的第二個字元。這個字元的內容稱作「應答 ID」,Bit 0~4 代按當前 PS2 手掣傳回的內容長度,假設變數名稱為 P,其計算方法為:3+(Px2)。在數碼模式時會傳回 0x41,亦即是 3+(1x2) = 5 個字元;而在模擬模式時會傳回 0x73,亦即是 3+(3x2) = 9 個字元。多出來的四個字元,是左右兩個「冬菇掣」的上下數值及左右數值;數值範圍介乎 0x00(左)到 0x80(中)到 0xFF(右)及 0x00(上)到 0x80(中)到 0xFF(下)。

由於我的 16-Channels PWM 輸出只有 66 步,因此我把手掣的數值除以四,轉換成 64 步並直接套用到 Servo 操控上。從片中可以看出利用 Analog Mode 能控制到 Servo 移動的幅度。只用一塊 ATmega-128 同時處理 16 頻 PWM 輸出、獨立 Servo 速度運算、PS2 手掣指令輸入、動作控制,這麼多工作集中在一身,能達到 66 步也算是合格吧!

2010年3月27日 星期六

AMIGO Mini PS2 手掣操控測試(Digital Mode)


今天完成了 PS2 手掣的操控部份,暫時支援數碼按鍵,亦即是「冬菇掣」以外的按鍵。稍後會支援「冬菇掣」的「模擬」數據。在這個版本中,按下左右方向鍵會決定左邊 Servo 的角度;按下正方圓形鍵會決定右邊 Servo 的角度。

2010年3月26日 星期五

ATmega-128 及 PS2 控制器成功連接


今晚我把 ATmega-128 的 PD2~PD6 腳伸延到測試母板,然後把 PS2 轉 USB 線拿出來開刀,取出 PS2 控制器的插座連電線,並把它們臨時接上 ATmega-128。根據昨天找到的資料進行編程,在 HyperTerminal 內觀看 ATmega-128 連接 PS2 控制器的輸出。連接三次後便能成功把 PS2 控制器設定為「模擬」模式,即俗稱「冬菇掣」模式,可以接受按鍵幅度的輸入。由於今晚弄得太晚,稍後才測試按鍵,用 PS2 控制器來操作 Servo 的角度。

2010年3月24日 星期三

AMIGO Mini 主程式測試(三)


對於昨天「不同步」問題,原因在於計算 Servo 位置時,由正負數所導致的錯誤。簡單修正了代碼後,結果如預計所料,能同時開始及停止。到目前為止,軟件部份需要待硬體部份完成後才能繼續。

2010年3月23日 星期二

AMIGO Mini 主程式測試(二)


既然 Servo 能正常運作,下一步便是測試全新開發的部份「獨立速度」。今次拿來兩個 Servo 做測試;左面的 Servo 設定為 90 度,而右面的設定為 0 度。當我按下「測試按鈕」的同時,它們會向著 180 度進發。兩者的步數均為 200 步。如果兩個 Servo 會同時起步及同時到達的話,就是我所希望的結果。

2010年3月22日 星期一

AMIGO Mini 主程式測試



前天完成的主程式,在測試 EMAX ES08A 時沒有反應;今天我找來了 Futaba S3003 進行測試。起初也沒有反應,但試多幾次不同角度時,無意中卻作出了反應。Servo 由一端轉到另一極端。我換上了 EMAX ES08A 再試也有相同反應,於是我便把當刻數值打印出來。數值竟然是由 17 至 85,跟我之前量度及計算的 23 至 92 有些少出入。不過,點都好,總算能控制得到;可以向下一步進法。

2010年3月20日 星期六

Servo 控制測試

AMIGO Mini 的 16-Channels PWM 輸出部份,以及獨立速度控制部份經已完成。在示波器下亦正常運作。如圖所示,輸出的 PWM 為 5V 20ms 間距;這是 Servo 控制的要求。可是當我接上 Servo 後,卻完全沒有反應,正尋找原因及修正方法。

How To: Implement Facebook Connect on the iPhone in 5 minutes


我在公司負責的 iPhone MMORPG「帝國」已經進入倒數階段,稍後還會加入 Facebook Connect 功能;因此是時候學習一下相關技術。在網上找到不錯的片子。

2010年3月19日 星期五

ACA302 三軸加速器


AMIGO Mini 的主控程式加入了 A/D 輸入。為了測試,我找來了 ACA302 三軸加速器。我手上沒有相關文件,不了解各腳的用法,於是上網找尋資料。這兒作一個記錄。

2010年3月18日 星期四

Time measurement on ATmega-128


ATmega-128 成功輸出 16-Channels PWM 後,便需要做實際的時間量度。如圖所示,得出的結果為大約 26us 一周。以 Servo 的 0.6ms 至 2.4ms 範圍計算,數值會是 23 至 92 範圍。

2010年3月17日 星期三

心律正常

折騰了兩天,共花了六個小時,原來擺了個大烏龍。AMIGO Mini 的心律一直都很正常,只是我不懂得使用示波器...。然而,今次都發現了一個一直存在的錯誤。原來 WGM12 由 ATmega32 的 TCCR1A 改為 ATmega128 的 TCCR1B。

2010年3月14日 星期日

AMIGO Mini 心律不正

小女子遙出生已經滿一個月,所有禁忌亦已解除,我也繼續 AMIGO Mini 的開發計劃。現在有三個女兒(連老婆),時間的確不夠用,唯有每天少睡兩小時,以滿足我的「機體開發夢」。

拿出塵封已久的 Fujitsu Notebook,加上 USB RS-232 轉換器,以及 ATmega-128;在初次連接失敗後,找來一個 BarCode 閱讀器(RS-232 的)以確保 USB RS-232 轉換器是運作正常。結果證明了是 ATmega-128 的下載設定出了問題。接著,跟據 AMIGO 使用的代碼,找到原來 Baud rate 是 9600 bps 或 115200 bps,測試後原來是使用 115200 bps。今次作一個記錄,免得下一次又要重滔覆轍。

就是這樣,程式能正成功下載到 ATmega-128。AMIGO Mini 會使用 16 DOF,我選用了 Port B 及 C,總共 16 pins 來控制 Servo。這 16 pins 會分成兩組,每組 8 個,以 20ms 的間隔輸出 PWM;每組相隔 10ms 時間,以減輕因同時動作而出現電力負荷的問題。在 UT81B 觀看 PWM 輸出,發現 AMIGO Mini 心律不正,正在尋找病源。

2010年3月13日 星期六

iPhone Stocks 看外匯及金屬價格

原來 iPhone 的 Stocks 工具除了能看指數及股票價格外,連外匯及金屬一樣也可以。其代號為:
JPY=X日元
EURUSD=X歐羅
GBPUSD=X英磅
AUD=X澳元
CHF=X瑞士法郎
CAD=X加拿大元
HKD=X港元
HKDCNY=X人民幣
XAUUSD=X黃金
XAGUSD=X
XCPUSD=X
XALUSD=X

iPad 將於 3/Apr 發售


剛剛收到電郵通知,iPad 將於 3/Apr 發售,不過香港 Apple Store 尚未推出。

2010年3月12日 星期五

AMIGO Mini 的板金製作步驟


首先準備好U形鋁條。這款鋁條很容易在五金舖買到。


按照壓平了的部件紙樣長度,量度將要剪開的位置。


以鋁剪把鋁條剪開。


把開口的部份用虎鉗咬著。


把鋁條向上向下屈曲。


當鋁條出現金屬疲勞時,鋁片會自然脫落。


然後把紙樣貼到鋁片上。


為免因手工欠佳而出現太大誤差,我通常會保留一點出血位。


按照紙樣中的折曲位置,把鋁片用虎鉗夾實。用鐵尺確保鋁片是 90 度垂直。


用平面及容易把持的硬物從鋁片後方向前折曲。


折曲成 90 度角。


在另一邊做相同的步驟。


便能製成 Servo 的連接部件。

2010年3月6日 星期六

在「雪豹」下顯示隱藏檔

Show Hidden Files in Snow Leopard

最近經常無法把檔案拷到家中的 QNAP 小服務器,原因相信是隱藏檔而導致。找遍 Finder 的設定也沒有隱藏檔相關;我只好使用 Terminal 來設定:

Pacess-HOs-Mac-mini:~ pacessho$ defaults write com.apple.Finder AppleShowAllFiles TRUE
Pacess-HOs-Mac-mini:~ pacessho$ KillAll Finder

2010年3月1日 星期一

Across Age Save Data 修改


當知道 Across Age 快將推出,看見那精緻鮮艷的畫風時,便決定要玩這個遊戲。今天終於下載到 iPhone,並體驗一下箇中設計。不過,非常可惜。如果要我打分的話,十分中我只給兩分;兩分都是給美工。這個遊戲最失敗的地方,我認為是操控極差!要跟一個 NPC 交談實在很困難,往往都跑過龍,沒能對著 NPC 就不能交談。雖然最近有一股 Virtual Joypad 的氣候在形成,不過未必適合各類型的遊戲。

既然操控極差,有再好的美術我也沒有心情繼續,更何況只有日語版本...。我只好轉換另一個 Game Play,就是修改遊戲的存檔。

Across Age 沒有對存檔進行加密,因此很容易能找出數據的位置;唯獨是「經驗值」有點奇怪,數值是以角色等級的「經驗基值」加上數據而構成。我針對遊戲內的第三個儲存格來修改,地址可見上圖。等級數值是在 P2 Exp 之後。