最近測試3.5 LCD顯示螢幕,雖然在Uno上測試都沒問題,
但是換到了Mega2560上卻無法讀取SD卡,
原因是Mega的SPI接腳不同,如果單純只有Micro SD擴充,
基本上是接在
GND
VCC
MISO 接腳50
MOSI 接腳51
SCK 接腳52
SS 接腳53
但是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
沒有留言:
張貼留言