当前位置:   article > 正文

ESP32学习笔记-读取SD卡并显示到屏幕上_esp32 读取tf卡

esp32 读取tf卡

硬件

FireBeetle 2 ESP32-E 开发板

1.54" 240x240 IPS 广视角TFT显示屏

硬件接线

测试代码

  1. //加载库
  2. #include "Arduino.h"
  3. #include "FS.h"
  4. #include "SD.h"
  5. #include "SPI.h"
  6. #include "DFRobot_GDL.h"
  7. //定义显示屏针脚
  8. #define TFT_DC D2
  9. #define TFT_CS D6
  10. #define TFT_RST D3
  11. #define TFT_BL D13
  12. //定义SD针脚
  13. #define TFT_SD D7
  14. //配置显示屏
  15. DFRobot_ST7789_240x240_HW_SPI screen(/*dc=*/TFT_DC,/*cs=*/TFT_CS,/*rst=*/TFT_RST);
  16. void setup()
  17. {
  18. //开启串口
  19. Serial.begin(115200);
  20. //挂载SD
  21. MountSD();
  22. //路径
  23. String path = "/hello.txt";
  24. //内容
  25. String str = "hello world !";
  26. //写入(覆盖)
  27. writeTxt(SD,path,str);
  28. //读取
  29. String txt = readTxt(SD,path);
  30. Serial.println( txt );
  31. //开启显示屏
  32. screen.begin();
  33. //屏幕背景颜色
  34. screen.fillScreen(COLOR_RGB565_BLACK);
  35. //显示文本
  36. printText(10,100,txt);
  37. }
  38. void loop()
  39. {
  40. }
  41. //挂载SD
  42. void MountSD()
  43. {
  44. //开启SD
  45. if(SD.begin())
  46. {
  47. //打印成功
  48. Serial.println("Card Mount succeed");
  49. }
  50. else
  51. {
  52. //打印失败
  53. Serial.println("Card Mount Failed");
  54. //挂载失败,延时重启
  55. delay(1000);
  56. //重启
  57. return;
  58. }
  59. //获取SD类型
  60. uint8_t cardType = SD.cardType();
  61. switch(cardType)
  62. {
  63. case 1:
  64. Serial.println("CARD_MMC");
  65. break;
  66. case 2:
  67. Serial.println("CARD_SD");
  68. break;
  69. case 3:
  70. Serial.println("CARD_SDHC");
  71. break;
  72. case 4:
  73. Serial.println("CARD_UNKNOWN");
  74. break;
  75. default:
  76. Serial.println("CARD_NONE");
  77. Serial.println("Please insert SD card");
  78. delay(1000);
  79. return;
  80. }
  81. }
  82. //写入(FILE_WRITE
  83. void writeTxt(fs::FS &fs,String path,String str)
  84. {
  85. //打开文件
  86. File myFile = fs.open(path, FILE_WRITE); //FILE_WRITE 覆写
  87. //如果文件打开,则进行写入
  88. if (myFile)
  89. {
  90. //打印开始
  91. Serial.println("Start write:" + path);
  92. //写入
  93. myFile.println(str);
  94. // 关闭文件
  95. myFile.close();
  96. //打印完成
  97. Serial.println("Complete write:" + path);
  98. }
  99. //如果文件没有打开,则打印错误
  100. else
  101. {
  102. Serial.println("error:Write failure");
  103. }
  104. }
  105. //写入(FILE_APPEND)
  106. void writeTxt_APPEND(fs::FS &fs,String path,String str)
  107. {
  108. //打开文件
  109. File myFile = fs.open(path, FILE_APPEND); //FILE_APPEND 续写
  110. //如果文件打开,则进行写入
  111. if (myFile)
  112. {
  113. //打印开始
  114. Serial.println("Start write_APPEND:" + path);
  115. //写入
  116. myFile.println(str);
  117. // 关闭文件
  118. myFile.close();
  119. //打印完成
  120. Serial.println("Complete write_APPEND:" + path);
  121. }
  122. //如果文件没有打开,则打印错误
  123. else
  124. {
  125. Serial.println("error:Write failure");
  126. }
  127. }
  128. //读取
  129. String readTxt(fs::FS &fs,String path)
  130. {
  131. //创建返回值
  132. String txt;
  133. //打开文件
  134. File myFile = fs.open(path,FILE_READ); //FILE_READ 只读
  135. //如果文件打开,则进行读取
  136. if (myFile)
  137. {
  138. //打印开始
  139. Serial.println("Start Read:" + path);
  140. //读取
  141. if( myFile.available() )
  142. {
  143. txt = myFile.readString();
  144. }
  145. //关闭文件打开状态
  146. myFile.close();
  147. //打印完成
  148. Serial.println("Complete read:" + path);
  149. }
  150. //如果文件没有打开,则打印错误
  151. else
  152. {
  153. Serial.println("error:Read failure");
  154. }
  155. //返回
  156. return txt;
  157. }
  158. //显示文本
  159. void printText(int x,int y,String str)
  160. {
  161. screen.setFont(&FreeMono12pt7b); //字体
  162. screen.setTextSize(1); //文字大小,范围为1~4
  163. screen.setTextColor(COLOR_RGB565_GREEN); //文字颜色
  164. screen.setCursor(x,y); //文字起点
  165. screen.print(str); //输出文字内容
  166. }

测试结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/977142
推荐阅读
相关标签
  

闽ICP备14008679号