官方:https://www.arduino.cc/en/Reference/SD
SD库
SD库允许在SD卡上读写,例如在Arduino Ethernet Shield上。它是建立在sdfatlib威廉Greiman。该库在标准SD卡和SDHC卡上支持FAT16和FAT32文件系统。它对文件使用短8.3名称。传递到SD库函数的文件名可以包含用斜杠/分隔的路径,例如“ directory / filename.txt”。由于工作目录始终是SD卡的根目录,因此无论文件名是否包含前导斜杠,其名称都指向同一文件(例如,“ / file.txt”等效于“ file.txt”)。从1.0版开始,该库支持打开多个文件。
微控制器和SD卡之间的通信使用SPI,它发生在数字引脚11、12和13(在大多数Arduino板上)或50、51和52(Arduino Mega)上。此外,必须使用另一个引脚来选择SD卡。这可以是硬件SS引脚-引脚10(在大多数Arduino板上)或引脚53(在Mega上)-或在SD.begin()调用中指定的另一个引脚。 请注意,即使您不使用硬件SS引脚,也必须将其保留为输出,否则SD库将无法工作。
SD 类
SD类提供用于访问SD卡并处理其文件和目录的功能。
函数:
函数名 | 解释 | 用法 | 参数 | 返回值 |
---|---|---|---|---|
begin() | 初始化SD库和卡。这开始使用SPI总线(大多数Arduino板上的数字引脚11、12和13; Mega上的50、51和52)和芯片选择引脚,默认为硬件SS引脚(大多数Arduino上的引脚10)板,在Mega上为53)。请注意,即使您使用其他芯片选择引脚,也必须保留硬件SS引脚作为输出,否则SD库功能将不起作用。 | SD.begin() SD.begin(cspin) | cspin(可选):连接到SD卡芯片选择线的引脚;默认为SPI总线的硬件SS线 | 成功返回true; 失败返回false |
exists() | 测试SD卡上是否存在文件或目录。 | SD.exists(filename) | filename:要测试存在性的文件的名称,其中可以包含目录(以正斜杠/分隔) | 如果文件或目录存在则为true,否则为false |
mkdir() | 在SD卡上创建目录。这还将创建任何尚不存在的中间目录。例如SD.mkdir(“ a / b / c”)将创建a,b和c。 | SD.mkdir(filename) | filename:要创建的目录的名称,子目录之间用正斜杠(’/’) | 如果目录创建成功,则返回true;否则,返回false |
open() | 打开SD卡上的文件。如果打开该文件进行写入,则将在尚不存在该文件的情况下创建该文件(但是包含该文件的目录必须已经存在)。 | SD.open(filepath) SD.open(filepath, mode) | filename:要打开的文件的名称,其中可以包含目录(以正斜杠/分隔)-char * 模式(可选):打开文件的模式,默认为FILE_READ- byte。之一: FILE_READ:从文件开头开始打开文件进行读取。 FILE_WRITE:从文件末尾开始打开文件进行读写。 | 引用打开的文件的File对象;如果无法打开文件,则此对象在布尔上下文中将评估为false,即,您可以使用“ if(f)”测试返回值。 |
remove() | 从SD卡中删除文件。 | SD.remove(filename) | filename:要删除的文件的名称,其中可以包含目录(以正斜杠/分隔) | 如果成功删除文件,则为true,否则为false。(如果文件不存在,则返回值未指定) |
rmdir() | 从SD卡中删除目录。该目录必须为空。 | SD.rmdir(filename) | filename:要删除的目录的名称,子目录之间用正斜杠(’/’) | 如果删除目录成功,则返回true;否则,返回false。(如果目录不存在,则返回值未指定) |
File 类
File类允许读取和写入SD卡上的单个文件。
函数名 | 解释 | 用法 | 参数 | 返回值 |
---|---|---|---|---|
name() | 返回文件名 | file.name() | ||
available() | 检查是否有任何字节可用于从文件读取。available()从Stream实用程序类继承。 | file.available() | file:File类的实例(由SD.open()返回) | 可用字节数(int) |
close() | 关闭文件,并确保将写入其中的所有数据物理保存到SD卡。 | file.close() | file:File类的实例(由SD.open()返回) | |
flush() | 确保写入文件的所有字节都物理保存到SD卡。关闭文件时,此操作自动完成。flush()从Stream实用程序类继承。 | file.flush() | file:File类的实例(由SD.open()返回) | |
peek() | 从文件中读取一个字节,而无需前进到下一个字节。也就是说,对peek()的连续调用将返回相同的值,与对下一个read()的调用相同。peek()继承自Stream实用程序类。 | file.peek() | file:File类的实例(由SD.open()返回) | 返回值:下一个字节(或字符);如果没有可用字节,则为-1。 |
position() | 获取文件中的当前位置(即,下一个字节将被读取或写入的位置)。 | file.position() | file:File类的实例(由SD.open()返回) | 文件中的位置(unsigned long)) |
print() | 将数据打印到文件中,该文件必须已打开才能进行写入。将数字打印为数字序列,每个数字为一个ASCII字符(例如,数字123作为三个字符“ 1”,“ 2”,“ 3”发送)。 | file.print(data) file.print(data, BASE) | file:File类的实例(由SD.open()返回) data:要打印的数据(char,byte,int,long或string) BASE(可选):打印数字的基数:BIN(二进制)(基数2),DEC(十进制)(基数10),OCT(八进制)(基数8),HEX(十六进制)(基数16)。 | print()将返回写入的字节数,尽管读取该数字是可选的 |
println() | ||||
seek() | ||||
size() | ||||
read() | ||||
write() | ||||
isDirectory() | ||||
openNextFile() | ||||
rewindDirectory() |