Hi all, I have problems with lovyan launcher... now the app doesn,t open the sd of the stack basic..
when I burn lovyan launcher with M5burner in a M5stack basic, the sd fail... same proces on a M5Stack gray, works...
on a basic unit, with this sketch, sd fail!!
/*
*******************************************************************************
* Copyright (c) 2022 by M5Stack
* Equipped with M5Core sample source code
* 配套 M5Core 示例源代码
* Visit for more information: https://docs.m5stack.com/en/core/gray
* 获取更多资料请访问: https://docs.m5stack.com/zh_CN/core/gray
*
* Describe: TF Card. TF卡
* Date: 2022/3/25
*******************************************************************************
In this example, we will detect the existence of a file and perform read and
write operations on it
在这个示例中,我们将会检测某文件是否存在,并进行读写文件操作
*/
#include <M5Stack.h>
void setup() {
M5.begin();
if (!SD.begin()) { // Initialize the SD card. 初始化SD卡
M5.Lcd.println(
"Card failed, or not present"); // Print a message if the SD card
// initialization fails or if the
// SD card does not exist
// 如果SD卡初始化失败或者SD卡不存在,则打印消息
while (1)
;
}
M5.Lcd.println("TF card initialized.");
if (SD.exists("/hello.txt")) { // Check if the "/hello.txt" file
// exists.查看是否存在"/hello.txt"文件
M5.Lcd.println("hello.txt exists.");
} else {
M5.Lcd.println("hello.txt doesn't exist.");
}
M5.Lcd.println("Creating hello.txt");
File myFile = SD.open("/hello.txt",
FILE_WRITE); // Create a new file "/hello.txt".
// 创建一个新文件"/hello.txt"
if (myFile) { // If the file is open, then write to it.
// 如果文件打开,则进行写入操作
M5.Lcd.println("Writing to test.txt...");
myFile.println("SD test.");
myFile.close(); // Close the file. 关闭文件
M5.Lcd.println("done.");
} else {
M5.Lcd.println("error opening test.txt");
}
delay(500);
myFile = SD.open("/hello.txt",
FILE_READ); // Open the file "/hello.txt" in read mode.
// 以读取模式打开文件"/hello.txt"
if (myFile) {
M5.Lcd.println("/hello.txt Content:");
// Read the data from the file and print it until the reading is
// complete. 从文件里读取数据并打印到串口,直到读取完成.
while (myFile.available()) {
M5.Lcd.write(myFile.read());
}
myFile.close();
} else {
M5.Lcd.println("error opening /hello.txt"); // If the file is not open.
// 如果文件没有打开
}
}
void loop() {
}
.... on basic unit with this sketch, sd works
// Libraries for SD card
#include "FS.h"
#include <SD.h>
//#include "mySD.h"
#include <SPI.h>
// Define CS pin for the SD card module
#define SD_MISO 19
#define SD_MOSI 23
#define SD_SCLK 18
#define SD_CS 4
SPIClass sdSPI(VSPI);
String dataMessage;
void setup() {
// Start serial communication for debugging purposes
Serial.begin(115200);
// Initialize SD card
//SD.begin(SD_CS);
sdSPI.begin(SD_SCLK, SD_MISO, SD_MOSI, SD_CS);
if(!SD.begin(SD_CS, sdSPI)) {
Serial.println("Card Mount Failed");
return;
}
Serial.println("1");
uint8_t cardType = SD.cardType();
if(cardType == CARD_NONE) {
Serial.println("No SD card attached");
return;
}
Serial.println("Initializing SD card...");
if (!SD.begin(SD_CS)) {
Serial.println("ERROR - SD card initialization failed!");
return; // init failed
}
Serial.println("2");
// If the data.txt file doesn't exist
// Create a file on the SD card and write the data labels
File file = SD.open("/data1.txt");
if(!file) {
Serial.println("File doens't exist");
Serial.println("Creating file...");
writeFile(SD, "/data1.txt", "Reading ID, Date, Hour, Temperature \r\n");
}
else {
Serial.println("File already exists");
}
file.close();
logSDCard();
}
void loop() {
// The ESP32 will be in deep sleep
// it never reaches the loop()
}
// Write the sensor readings on the SD card
void logSDCard() {
//dataMessage = String(readingID) + "," + String(dayStamp) + "," + String(timeStamp) + "," +
// String(temperature) + "\r\n";
dataMessage = "Hello World \n";
Serial.print("Save data: ");
Serial.println(dataMessage);
appendFile(SD, "/data1.txt", dataMessage.c_str());
}
// Write to the SD card (DON'T MODIFY THIS FUNCTION)
void writeFile(fs::FS &fs, const char * path, const char * message) {
Serial.printf("Writing file: %s\n", path);
File file = fs.open(path, FILE_WRITE);
if(!file) {
Serial.println("Failed to open file for writing");
return;
}
if(file.print(message)) {
Serial.println("File written");
} else {
Serial.println("Write failed");
}
file.close();
}
// Append data to the SD card (DON'T MODIFY THIS FUNCTION)
void appendFile(fs::FS &fs, const char * path, const char * message) {
Serial.printf("Appending to file: %s\n", path);
File file = fs.open(path, FILE_APPEND);
if(!file) {
Serial.println("Failed to open file for appending");
return;
}
if(file.print(message)) {
Serial.println("Message appended");
} else {
Serial.println("Append failed");
}
file.close();
}
maybe I have to change some pins assignement some where??
tnks a lot!!