赞
踩
几经波折,终于达到预期,在此做个记录。
- //加载库
- #include "Arduino.h"
- #include "FS.h"
- #include "SD.h"
- #include "SPI.h"
-
- //定义SD针脚
- #define TFT_SD D7
-
- void setup()
- {
- //开启串口
- Serial.begin(115200);
-
- //挂载SD卡
- MountSD();
-
- //路径
- String path1 = "/hello.txt";
- //内容
- String str1 = "hello world !";
- //写入(覆盖)
- writeTxt(SD,path1,str1);
-
- //路径
- String path2 = "/love.txt";
- //内容
- String str2 = "i love you !";
- //写入(续写)
- writeTxt_APPEND(SD,path2,str2);
-
- //读取1
- String txt1 = readTxt(SD,path1);
- Serial.println( txt1 );
-
- //读取2
- String txt2 = readTxt(SD,path2);
- Serial.println( txt2 );
-
- }
-
- void loop()
- {
-
- }
-
-
- //挂载SD卡
- void MountSD()
- {
- //开启SD卡
- if(SD.begin())
- {
- //打印成功
- Serial.println("Card Mount succeed");
- }
- else
- {
- //打印失败
- Serial.println("Card Mount Failed");
- //挂载失败,延时重启
- delay(1000);
- //重启
- return;
- }
-
- //获取SD类型
- uint8_t cardType = SD.cardType();
- switch(cardType)
- {
- case 1:
- Serial.println("CARD_MMC");
- break;
- case 2:
- Serial.println("CARD_SD");
- break;
- case 3:
- Serial.println("CARD_SDHC");
- break;
- case 4:
- Serial.println("CARD_UNKNOWN");
- break;
- default:
- Serial.println("CARD_NONE");
- Serial.println("Please insert SD card");
- delay(1000);
- return;
- }
- }
-
- //写入(FILE_WRITE)
- void writeTxt(fs::FS &fs,String path,String str)
- {
- //打开文件
- File myFile = fs.open(path, FILE_WRITE); //FILE_WRITE 覆写
-
- //如果文件打开,则进行写入
- if (myFile)
- {
- //打印开始
- Serial.println("Start write:" + path);
- //写入
- myFile.println(str);
- // 关闭文件
- myFile.close();
- //打印完成
- Serial.println("Complete write:" + path);
- }
- //如果文件没有打开,则打印错误
- else
- {
- Serial.println("error:Write failure");
- }
- }
-
- //写入(FILE_APPEND)
- void writeTxt_APPEND(fs::FS &fs,String path,String str)
- {
- //打开文件
- File myFile = fs.open(path, FILE_APPEND); //FILE_APPEND 续写
-
- //如果文件打开,则进行写入
- if (myFile)
- {
- //打印开始
- Serial.println("Start write_APPEND:" + path);
- //写入
- myFile.println(str);
- // 关闭文件
- myFile.close();
- //打印完成
- Serial.println("Complete write_APPEND:" + path);
- }
- //如果文件没有打开,则打印错误
- else
- {
- Serial.println("error:Write failure");
- }
- }
-
- //读取
- String readTxt(fs::FS &fs,String path)
- {
- //创建返回值
- String txt;
- //打开文件
- File myFile = fs.open(path,FILE_READ); //FILE_READ 只读
- //如果文件打开,则进行读取
- if (myFile)
- {
- //打印开始
- Serial.println("Start Read:" + path);
- //读取
- if( myFile.available() )
- {
- txt = myFile.readString();
- }
- //关闭文件打开状态
- myFile.close();
- //打印完成
- Serial.println("Complete read:" + path);
- }
- //如果文件没有打开,则打印错误
- else
- {
- Serial.println("error:Read failure");
- }
- //返回
- return txt;
- }

1、确认SD卡针脚
2、fs.open(path,mode)函数,mode有多种方式
FILE_WRITE 以可写的方式打开,覆写内容
FILE_APPEND 以可写的方式打开,续写内容
FILE_READ 以只读的方式打开
3、fs.readString()函数,直接读取文本,并返回String
Arduino UNO:在TF卡中创建并读写TXT文件_arduino uno sd卡 error opening test.txt-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。