[軟體] 3.5" tft LCD shield 驅動與SD卡

最近測試3.5 LCD顯示螢幕,雖然在Uno上測試都沒問題,
但是換到了Mega2560上卻無法讀取SD卡,

原因是Mega的SPI接腳不同,如果單純只有Micro SD擴充,

基本上是接在
GND
VCC
MISO 接腳50
MOSI 接腳51
SCK 接腳52
SS 接腳53

3.5" tft LCD shield 驅動與SD卡




但是Tft LCD shield 的SPI接腳在10~13位置,因此在不改變接線的情況下

可以使用soft spi的方式

https://github.com/adafruit/SD

arduino內部就有SD卡的範例在,所以下載之後覆蓋原始的SD檔案

接著開啟

Sd2Card.cpp

將此行加入//變成下面的樣子
//#define USE_SPI_LIB

Sd2Card.h

將此行加入//變成下面的樣子
//#define USE_SPI_LIB

將soft spi原本的0改為1
#define MEGA_SOFT_SPI 1

接著儲存這兩個檔案,然後程式段中SD.begin(10)

,因為LCD Shield的SS腳在接腳10。


螢幕驅動部分
#include <MCUFRIEND_kbv.h>
https://github.com/prenticedavid/MCUFRIEND_kbv
#include <Adafruit_GFX.h>
https://github.com/adafruit/Adafruit-GFX-Library

以上兩個檔案庫匯入到arduino中

程式段

定義LCD的接腳
#define LCD_RESET A4
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
MCUFRIEND_kbv tft;

初始化
Serial.begin(9600);
tft.reset();
uint16_t identifier = tft.readID();
tft.begin(identifier);
tft.setRotation(1);//翻轉90度
tft.fillScreen(WHITE);
tft.setTextColor(BLACK, WHITE);
tft.setTextSize(2);
tft.println(" ");
tft.print(" LCD Driver:");
tft.println(identifier, HEX);

demo檔案連結


正常驅動後會顯示面板的驅動ic,我買的這一塊是ili9486

沒有留言:

張貼留言