
Arduino入門
StackChan microSD カードに関連する API とサンプルプログラムです。
#include <SPI.h>
#include <SD.h>
#include <M5Unified.h>
#define SD_SPI_CS_PIN 4
#define SD_SPI_SCK_PIN 36
#define SD_SPI_MISO_PIN 35
#define SD_SPI_MOSI_PIN 37
void setup() {
M5.begin();
M5.Display.setFont(&fonts::FreeMono12pt7b);
M5.Display.clear();
SPI.begin(SD_SPI_SCK_PIN, SD_SPI_MISO_PIN, SD_SPI_MOSI_PIN, SD_SPI_CS_PIN);
if (!SD.begin(SD_SPI_CS_PIN, SPI, 25000000)) {
M5.Display.println("SD card not detected");
while (1);
} else {
M5.Display.println("SD card detected");
}
delay(1000);
M5.Display.println("SD card write test...");
auto file = SD.open("/WriteTest.txt", FILE_WRITE, true);
if (file) {
file.print("Hello, world! \nSD card write success! \n");
file.close();
M5.Display.println("SD card write success");
} else {
M5.Display.println("Failed to create TXT file");
}
delay(1000);
M5.Display.println("SD card read test...");
if (SD.exists("/cores3_test_picture01.png")) {
M5.Display.println("PNG file 01 detected");
} else {
M5.Display.println("PNG file 01 not detected");
}
if (SD.exists("/cores3_test_picture02.png")) {
M5.Display.println("PNG file 02 detected");
} else {
M5.Display.println("PNG file 02 not detected");
}
delay(1000);
}
void loop() {
M5.Display.drawPngFile(SD, "/cores3_test_picture01.png");
delay(500);
M5.Display.drawPngFile(SD, "/cores3_test_picture02.png");
delay(500);
}microSD カードを用意し、FAT32 形式でフォーマットしてください。解像度 320 * 240 の PNG 画像を2枚用意し、ルートディレクトリに cores3_test_picture01.png、cores3_test_picture02.png という名前で保存してください。test_picture01.png、test_picture02.png を直接ダウンロードすることもできます。画像の解像度が 320*240 でない場合、プログラムはプリセットに基づいて表示方法を決定するため、表示が正常に行われない場合があります。
SD カードを StackChan に挿入する際は、SD カードの接触面が StackChan の画面と同じ方向を向くようにご注意ください。上記のコードを Arduino IDE にコピーし、コンパイルして StackChan に書き込んでください。
このプログラムは SD カード上にテキストファイル WriteTest.txt を作成してテキストを書き込み、その後 SD カード内の2枚の PNG 画像を繰り返し表示します。
StackChan の microSD カード部分には、Arduino 標準の SD ライブラリと M5GFX ライブラリの drawPngFile 関数が使用されています。関連する API の詳細については、以下のドキュメントをご参照ください。