2016年5月15日 星期日

2.8 吋 (400x240) 電阻式觸模液晶螢幕函式庫版本更新 - 修正 Arduino Mega 2560 支援的問題與範例使用說明

網頁最後修改時間:2016/06/24 

原先函式庫 (V1.0.0) 是針對 Arduino UNO 改寫,並將觸摸以及液晶螢幕功能全部整合在同一函式庫資料夾裡面。由於 Arduino Mega2560 在液晶螢幕板子上的接腳雖然與 Arduino UNO 相同,但是實際上第二功能卻是不同的,因此需要再對函式庫進行改寫以符合兩種板子使用的情形。

新的函式庫 (V1.1.0) 已經與賣場所提供的四個範例程式測試過了,只有讀取記憶卡顯示圖面那個城市需要做小部修改之外,其他值接就可使用在 Arduino UNO 和 Arduino Mega2560 板子 ( 其他板子也可以,但同樣的要確認腳位與功能);測試結果與相關注意事項就在接下來的說明中。
硬體環境:
  • 2.8 吋 (400x240) 電阻式觸模液晶螢幕
  • Arduino Mega2560
軟體環境:
  • 安裝編輯環境:Arduino IDE 1.6.5-r5
    其他可用的版本應該跟程式碼中測試的相同,這裡沒額外去測 !
  • 安裝液晶螢幕函式庫:TFTLCD-mPm-v1.1.0
    檔案位於 {雲端硬碟}/arduino/codes/libraries
    確認 {My Documents}/Arduino/libraries 沒有其他的 TFTLCD 函式庫,不然會造成編譯時候的衝突或是出現編譯錯誤 !
    上面注意事項沒問題後,下載 TFTLCD-mPm.zip 後直接解壓縮到 {My Documents}\Arduino\libraries 目錄下,會產生一個 TFTLCD-mPm 的資料夾,裡面會包含下面幾個檔案
TFTLCD-mPm 函式庫檔案列表
  • 安裝記憶卡函式庫:SdFat.zip
    SdFat 函式庫需要手動安裝,安裝方法請參考 readme.txt 的說明。另外,重要的一點 ! 需要開啟該函式庫裡面 Software SPI 的功能,才能讓 Mega2560 正確讀取記憶卡。
    有購買套件的使用者,上雲端硬碟下載此函式庫直接安裝就可使用。
  • 程式碼:範例程式除了下面這一個需要重新下載之外,其餘三個直接使用就可以了。
    tftpics_m2560.zip
    下載上面壓縮檔,或是下載 {雲端硬碟}/arduino/codes/tftpics 整個目錄,並解壓縮到 {My Documents}/Arduino/ 目錄下。目錄中有一個 bmp 的資料夾,執行這個程式需要先將資料夾裡面 *.bmp 和 *.lcd 共六個檔案複製到 MicroSD 中,程式才能讀取和執行。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//* 截至 2016/05/09 為止,Arduino IDE ( https://www.arduino.cc/en/Main/Software ) 最新版本為 1.6.8,但不是新版本就可以用。每個程式都會將測試成功的 Arduino IDE 版本列在其中,所以若是與網頁中使用的版本不一樣而出現問題,就改用網頁建議的版本來試。

因為到現在個人認為用的最穩定的 Arduino IDE 版本是 1.6.5-r5 ! 如果之前在 Arduino IDE 寫程式編譯上傳成功,但是出現奇怪執行現象時,可以先換版本編譯再上傳試試,或許就會意料中的結果,而不是意想不到的 ! 
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

Arduino Mega2560 程式範例使用說明:

除了使用記憶卡的 tftpics 程式碼需要下載另外修改的 tftpics_m2560 之外,其餘提供的範例程式可以直接用在 Arduino Mega2560 板子。下面除了需要特別說明之外,程式碼的說明請直接到網頁最下方的連結網頁看,這邊大多只列出執行結果的照片。

/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* graphicstest.ino:
Arduino Mega2560, graphicstest.ino 其中幾個運行畫面
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* TouchScreen_Calibration:

由於觸摸螢幕校正會取讀取類比電壓訊號,因此之前在 Arduino UNO 的校正值不可以直接使用,必須要再重新校正一次。在運行 tftpaint.ino 程式前,必須更新這些校正值,不然畫筆與螢幕的位置會偏移。

所以可以說,每次更換 Arduino 板子使用時,若是要使用觸摸功能之前,不管如何一定要先校正之後再使用,這一點很重要 !
Arduino Mega2560, TouchScreen_Calibrarion.ino 運行畫面
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* tftpaint.ino:

Arduino Mega2560, tftpaint.ino 運行畫面
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* tftpics_m2560.ino:

2.8吋電阻式觸摸螢幕的 MicroSD 卡的 SPI 通訊接腳是使用 <D11><D12><D13> 這三隻接腳 ( <D10> 跟這邊要說的沒關係)。對於 Arduino UNO 來說就是可以直接使用硬體 SPI 來跑;但是對於 Arduino Mega2560 就不行。因此若直接使用 Arduino IDE 內建的 SD 函式庫,就會直接使用預設的硬體 SPI 來跑。對於 Arduino Mega2560 來說,SPI 硬體通訊接腳並不是在 <D11><D12> 和 <D13> 這三隻接腳,而是位於其他地方。所以若要讓程式能正常運行,必須使用軟體 SPI。

為了讓生活快意一些,建議使用 SdFat 函式庫。只要更改原程式碼中的標頭檔以及多宣告一個 SdFat SD,最後取 SdFatConfig.h 開啟軟體 SPI 功能,程式碼就可以順利運行在 Arduino Mega2560 板子。

編譯並上傳之後就會看到如下畫面。

Arduino Mega2560, tftpics_m2560.ino 運行畫面-01

Arduino Mega2560, tftpics_m2560.ino 運行畫面-02
Arduino Mega2560, tftpics_m2560.ino 運行畫面-03
結論:

雖然有慢了一點,不過總是有壓力才會有成長 ! 經過幾天的撰寫,終於連同函式庫更新與說明網頁都完成,總算可以鬆一口氣開始其他的東西,希望對於手邊有這片液晶螢幕的人有些許幫助。


<<部落格相關網頁連結>>

沒有留言:

張貼留言

留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!

發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?

不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !