2017/03/22

Arduino擴充板:Adafruit的2.8吋觸控式TFT螢幕擴充板

買了Adafruit的Adafruit的2.8吋觸控式TFT螢幕擴充板,開箱並簡單介紹,詳細設定步驟請看Adafruit的文件;我買的是Arduino擴充板形式,另外也有分線板形式

我的環境:Windows 10、Arduino IDE 1.8.1、Arduino Uno板子。

這款產品主要有三個部分,都是SPI介面:
  • TFT LCD,對角線長2.8吋,解析度240x340像素,18-bit顏色(262000個色彩),不過Adafruit的程式庫使用16-bit色彩模式,背光是4個白光LED,驅動器是ILI9341。LCD有8-bit模式與SPI模式,前者需要的腳位較多、速度較快,後者需要的腳位較少、速度較慢。
  • 觸控螢幕,屬於電阻式觸控技術,只能感測一個接觸點,控制器是STMPE610。
  • microSD插槽,SPI介面。
既然是SPI介面,共同所需腳位有13(SCLK)、12(MISO)、11(MOSI),然後LCD的CS是腳位10,且還需要一條DC線路是腳位9(控制要傳資料Data、還是命令Command);觸控螢幕的CS是腳位8;microSD的CS是腳位4。

因為已經是Arduino擴充板了,硬體方面直接插上即可。

軟體方面需要的程式庫:
Adafruit_ILI9341,LCD低階操作動作的程式庫,附帶許多範例。
Adafruit-GFX-Library,高階的泛用圖形繪製程式庫,API參考文件
Adafruit_STMPE610,觸控螢幕的程式庫。

先執行Adafruit_STMPE610程式庫的測試範例TouchTest,然後用手指按一按觸控螢幕,應可在序列埠監控視窗看到類似下列的訊息。

注意:這支範例程式預設使用I2C介面,需要修改,拿掉I2C的部分,加上底下這兩行使用SPI:
#define STMPE_CS 8
Adafruit_STMPE610 touch = Adafruit_STMPE610(STMPE_CS);
然後執行Adafruit_ILI9341程式庫的測試範例graphicstest,會輸出各種不同圖形畫面,影片在YouTube,38秒

然後執行Adafruit_ILI9341程式庫的範例touchpaint,從左邊選擇顏色,當個小畫家吧。
另外還有範例是從microSD卡讀出圖檔,顯示在螢幕上。

板子的正面就是螢幕,背面如下圖:
  • 左下方,可看到TFT LCD與觸控螢幕(touchscreen) 的控制器晶片型號與介面。
  • 左邊中間,microSD卡插槽。
  • 右邊中間,可看到腳位編號。
  • 右下方,backlite控制要不要從腳位3控制背光(預設為開);TS int控制要不要接收觸控螢幕的中斷訊號;右邊的六個,控制SPI的腳位要不要連到13、12、11與ICSP排針,Leonardo與Mega板子需要修改。
板子上有個3.3V / 300mA的LDO穩壓器,TFT LCD與觸控螢幕應該只會耗用100mA的電。


參考資料:

24 comments:

  1. 請問一下 arduino 以往都是8位元微處理器,到了Due改成32位元,在程式中是否有專屬的寫法?可以增加效率之類?

    還是說使用者根本不用擔心這些,對於設備來說,相同的sketch在不同的機台就會有不同的運作效率而已?!(目前已知一些資料範圍不同int long ......)

    ReplyDelete
    Replies
    1. 先問你有需要增加效率嗎?
      沒有的話,就不需要特別寫法;要不然,豈不多此一事。

      例如,一般迴圈會這樣寫,for(int i = 0; i <= 99; i++),
      但若可以的話,可寫成這樣for(int i = 99; i >= 0; i--),
      這樣一來,可少掉一個register儲存終點值99。
      但有那個需求嗎?

      Due是84 MHz,比一般的Arduino 16MHz高。
      差異的話,Due是3.3V,Uno是5V,連接電子元件時要注意。
      Uno與Due各個腳位,功能不一樣;以前的程式移植時要改寫。
      等等。

      Delete
    2. 了解 感謝前輩!

      這次拋出這個問題,最主要是最近為了偵測多個馬達旋轉相位變化速度,回推慣量在加入需要影響的條件,最後帶出煞車或加速的輸出量⋯⋯之類需要一些計算,又想他算的快,又想準,又想簡單易讀。就是一整個很貪心

      先前在網路上爬到的文章都是說32位元多好或優缺點,實在找不到可以快速體驗一下兩者差異的作法,但對我一般使用者而言真想去體驗一下文章說的好或是差。
      就像是買了新電腦,總想知道他可以厲害到什麼程度?!
      (灌個以前跑不動的遊戲試試)

      Delete
    3. 嗯,我不是什麼前輩,寫寫入門文章而已。

      多個馬達相位變化?哇,這麼厲害,
      就用用看uno與due,比較看看不就知道了,呵,我這是不懂的人的說法。

      Delete
  2. 葉老師:
    不知道你有沒有開課可以好好了解arduino ,網路上爬文對於一些可以網路下載的程式範例,怎麼下載都無法成功執行也不知道錯在哪裡,想好好了解一番

    ReplyDelete
    Replies
    1. 沒有。

      想要當面問人的話,現在各處不是有很多makerspace/hackerspace,應該都有熟悉Arduino與各種技術的高手。

      萬事起頭難,加油吧。

      你只形容最終結果【怎麼下載都無法成功執行】,
      沒有告知任何資訊、錯誤訊息、環境設定等等,無法回答。

      Delete
  3. 請問1.8.1新版IDE的範例裡第三方程式範例是甚麼意思?

    ReplyDelete
    Replies
    1. 第三方程式庫的範例,
      顧名思義,
      就是非官方、非Arduino IDE內建的第三方程式庫所提供的範例。

      Delete
  4. IDE的範例用甚麼電路該去哪邊查呢

    ReplyDelete
    Replies
    1. 範例應該要提供,
      看看範例的資料夾,裡面會有電路圖檔。

      Delete
    2. 如果是ARDUINO所提供的範例電路圖會在哪一個資料夾呢?開檔的程式是不是需要下載呢?因為libraries裏的資料夾的檔案我都無法開啟

      Delete
    3. 不就是examples子目錄底下嗎?

      什麼檔案?.ino與.pde是Arduino的sketch檔,從IDE去開。

      怎麼可能都無法開啟,裡面有C++語言的原始碼檔,一般文字編輯器就可以開;也有.txt文字檔,以及其他。

      建議你找本入門書看看吧。

      Delete
    4. 有可以推薦的入門書嗎?我進入examples子目錄沒有看到電路圖,不是所有的檔案都不能開,不好意思因為剛接觸,所以問的問題都沒有程度

      Delete
    5. 看看我寫的Arduino介紹文章
      http://yehnan.blogspot.tw/2012/02/arduino_21.html

      以及拙作
      http://yehnan.blogspot.tw/2014/02/arduino_21.html

      以及趙老師的曠世鉅作
      http://yehnan.blogspot.tw/2013/04/arduinoarduino.html

      有些範例很簡單,電路的接法,寫在範例程式碼裡,
      有些範例的電路圖是圖檔,如ADXL3xx裡有schematic.png與layout.png。


      Delete
  5. 是因為我下載壓縮檔,存入libraries所產生的嗎

    ReplyDelete
  6. 葉老師:我想做一個停車繳費的專案,它的作用如下:1個取票機(rfid感應模組)一個驗票機(rfid感應模組)一個主機(儲存rfid讀取的資料並做比對)還有一個繳費機,如果用兩個樹梅派作主機和繳費機的主機,2個arduino做取票機和驗票機,那他們之間需要甚麼硬體做聯結嗎?他們之間的資料可以互相傳輸嗎?

    ReplyDelete
    Replies
    1. > 需要甚麼硬體做聯結嗎?
      有線的,乙太網路、I2C、SPI等等。
      無線的:紅外線、藍牙、WiFi、ZigBee等等。

      > 可以互相傳輸嗎?
      可以。

      Delete
    2. 那樹梅派加裝攝影鏡頭可以做車牌辨識嗎?

      Delete
    3. http://lukagabric.com/raspberry-pi-license-plate-recognition/

      Delete
  7. 如果控制主機要連上網路,還需要甚麼硬體呢?(做網路線上控制)

    ReplyDelete
    Replies
    1. 樹莓派3已經內建乙太網路、WiFi、藍牙。

      現在物聯網這麼夯,到處都是各式各樣的開發板,
      如Particle Photon、ESP8266、LinkIt、等等。

      一般Arduino板子若要上網,要加裝擴充板。

      Delete