pdf-icon

Arduino Quick Start

2. Devices & Examples

Tough microSD Card

Tough microSD card related APIs and example programs.

Example Program

Build Requirements

  • M5Stack Board Manager version >= 2.1.4
  • Board selection = M5Tough
  • M5Unified library version >= 0.2.5
  • M5GFX library version >= 0.2.7
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#include <Arduino.h>
#include <SPI.h>
#include <SD.h>
#include <M5Unified.h>
#include <M5GFX.h>
#define SD_SPI_CS_PIN 4
#define SD_SPI_SCK_PIN 18
#define SD_SPI_MOSI_PIN 23
#define SD_SPI_MISO_PIN 38
void setup() {
M5.begin();
M5.Display.setRotation(1);
M5.Display.setFont(&fonts::FreeMono12pt7b);
// SD Card Initialization
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)) {
// Print a message if SD card initialization failed or if the SD card does not exist.
M5.Display.print("\n SD card not detected\n");
while (1)
;
} else {
M5.Display.print("\n SD card detected\n");
}
delay(1000);
// Write TXT file
M5.Display.print("\n SD card write test...\n");
auto file = SD.open("/WriteTest.txt", FILE_WRITE, true);
if (file) {
file.print("Hello, world! \nSD card write success! \n");
file.close();
M5.Display.print(" SD card write success\n");
} else {
M5.Display.print(" Failed to create TXT file\n");
}
delay(1000);
M5.Display.print("\n SD card read test...\n");
if (SD.open("/TestPicture01.png", FILE_READ, false)) {
M5.Display.print(" PNG file 01 detected\n");
} else {
M5.Display.print(" PNG file 01 not detected\n");
}
if (SD.open("/TestPicture02.png", FILE_READ, false)) {
M5.Display.print(" PNG file 02 detected\n");
} else {
M5.Display.print(" PNG file 02 not detected\n");
}
delay(1000);
}
void loop() {
// Read PNG file and draw picture
M5.Display.drawPngFile(SD, "/TestPicture01.png");
delay(500);
M5.Display.drawPngFile(SD, "/TestPicture02.png");
delay(500);
}

Prepare a microSD card, format it to FAT32, and place two 320*240 resolution PNG images in the root directory. Name them TestPicture01.png and TestPicture02.png. (You can also directly download Sample Image 1 and Sample Image 2. If the resolution is not 320*240, the program will decide the display mode based on presets, which may result in display issues.)

As shown in the image below, use the included 2.5mm hex wrench to loosen the four screws on the back of the device. Open the cover, and the arrow on the right side points to the Tough's microSD card slot.

Insert the prepared SD card into the Tough, making sure the metal contacts face the same direction as the Tough's screen. Copy the above code into the Arduino IDE, compile, and upload it to the Tough.

This program will create a text file WriteTest.txt on the SD card and write a short message. Then, it will loop and display the two PNG images from the SD card.

API

The Tough microSD card functionality uses Arduino’s built-in SD library and the drawPngFile function from the M5GFX library. For more details, refer to the following documentation:

On This Page