Arduino Due SD Card 讀取失敗

從淘寶買了一塊 Arduino Shield ,上面有一塊 3.5 吋的液晶面板,解析度是 480x320,板子上還有 SD Card 插槽,據賣家說是可以支援 Arduino Due 的。

因為是初學者,所以從範例中找一個來執行,增強自己的信心。所以我挑了一個 Example07-ShowBMP_320X480,執行成功的話,可以從 SD Card 中讀取 BMP 檔案,然後秀在 LCD 上面。

當然,事情總是不會這麼順利的。 😦

雖然程式編譯的過,也可以 upload 到 Arduino Due 裡,但在讀取 SD Card 的時候總是出錯。一開始我以為是 SD Card 相容的問題,所以換了好幾片,也都有 format 成 FAT32 格式,但就是不行。

再換過 CardInfo 這個範例,這個範例用來讀取 SD Card 的資訊,也是出現找不到 SD Card 的情況。

仔細的對了一下腳位,不對阿,LCD 的腳位是對的,但是 SD Card 的腳位不對阿。看樣子要跳線了,還好 SD Card 插槽的線只要接幾條就可以了。

簡單來說,我手上的這塊 Shield 板是給 Uno 用的,直接插上去就好了。但 Due 的腳位不太一樣,所以要改一下。

根據 graynomadArduino Due pinout 圖 (彩色的比較好看),SD-CS (Chip Select) 腳位是第 4 腳。

並將 CardInfo 內程式碼改為:

...
const int chipSelect = 4;
...
...
pinMode(chipSelect, OUTPUT);     
digitalWrite(chipSelect, HIGH);
...

其他三隻腳可以參看下圖對接就好了。

Shield Arduino Due SPI
SD_DI MOSI
SD_DO MISO
SD_SCK SCK

當然也要把 Arduino Due 上的 3.3v 跟 5v 接到 Shield 上。

一切就緒,應該就成功了。