比如我读300个字在串口上可以正常显示,但是在液晶屏上只显示TXT文件的第一行,这是为什么呢?
字符串中有换行回车或0x1A文件结束符,我猜。
看你的f_read的具体参数
不知道你这个问题是否已经解决, 如果还没有解决的话:首先,我们需要先确认液晶屏是否能够正常显示文本。如果液晶屏本身没有问题,那么可以考虑对读取文件的代码进行优化。
我们可以尝试增加一个循环,读取整个文件内容,并将每行内容分别显示在液晶屏上,如下所示:
#include <LiquidCrystal.h>
#include <SD.h>
File myFile;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
while (!Serial) {}
Serial.print("Initializing SD card...");
// 确认SD卡是否能够正常读取
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
myFile = SD.open("example.txt");
if (myFile) {
Serial.println("example.txt:");
// 读取整个文件内容
while (myFile.available()) {
// 读取每行内容
String line = myFile.readStringUntil('\n');
// 在液晶屏上显示每行内容
lcd.print(line);
lcd.setCursor(0, 1);
}
myFile.close();
} else {
Serial.println("error opening example.txt");
}
}
void loop() {
}
在上述代码中,我们使用了一个while循环,读取整个文件内容,并将每行内容分别显示在液晶屏上。在显示每行之后,我们还将光标移动到下一行的开头,以便继续显示下一行内容。
如果在尝试了上述方案之后,液晶屏仍然无法正常显示文件内容,那么可能存在硬件问题或者其他因素导致的bug。此时,应该逐一排查可能存在的问题,找到并解决问题。