arduino学习笔记18---SD卡读写实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

本次实验使用arduino驱动SD卡,在SD卡中进行文件读写。需要说明的是arduino的SD库文件,目前对2G以上的卡支持不是很好,所以推荐大家使用2G包含2G以下的,文件格式使用FAT格式。这次我是用的是kingmax2G的MicroSD卡。先看一下硬件连接图把下面代码下载进arduino控制板/*此例子展示如果记录三个模拟引脚数值到SD卡,使用SD库。电路部分*模拟引脚使用模拟口0,1,2大家可以根据情况接入模拟传感器,如果没有,也可以完成此实验,只不过数值是不停跳动的干扰源。*SD卡与arduino控制板使用SPI总线连接**MOSI-pin11**MISO-pin12**CLK-pin13**CS-pin4*/#includeSD.h//CS引脚为pin4,这里也沿用官方默认设置constintchipSelect=4;//设定CS接口voidsetup(){Serial.begin(9600);//设置串口通信波特率为9600Serial.print(InitializingSDcard...);//串口输出数据InitializingSDcard...pinMode(10,OUTPUT);if(!SD.begin(chipSelect)){//如果从CS口与SD卡通信失败,串口输出信息Cardfailed,ornotpresentSerial.println(Cardfailed,ornotpresent);return;}Serial.println(cardinitialized.);//与SD卡通信成功,串口输出信息cardinitialized.}voidloop(){//定义数组StringdataString=;//读取三个传感器值,写入数组for(intanalogPin=0;analogPin3;analogPin++){intsensor=analogRead(analogPin);dataString+=String(sensor);if(analogPin2){dataString+=,;}}//打开文件,注意在同一时间只能有一个文件被打开//如果你要打开另一个文件,就需要先关闭前一个FiledataFile=SD.open(datalog.txt,FILE_WRITE);//打开datalog.txt文件,读写状态,位置在文件末尾。if(dataFile){dataFile.println(dataString);dataFile.close();//数组dataString输出到串口Serial.println(dataString);}//如果无法打开文件,串口输出错误信息erroropeningdatalog.txtelse{Serial.println(erroropeningdatalog.txt);}}复制代码下载完成后,打开串口监视器。控制板开始工作后会看到如下画面,图中每一行上就是每次记录的三个传感器数值,本次实验并没有接传感器,所以数值是周围干扰源的杂乱信号。关闭arduino电源后把SD卡取出,接入电脑后,可以看到SD卡中有一个DATALOG.TXT文件,打开后有可以看到,此文件中的信息就是记录下的各个传感器的数值。第一个代码实验完以后,SD卡中的DATALOG.TXT不要删除,把下面代码下载进arduino中,打开串口监视器,看看效果。/*这个例子展示如何通过SD库从SD卡中读取一个文件,并且把数据通过串口发送。*SD卡与arduino控制板使用SPI总线连接**MOSI-pin11**MISO-pin12**CLK-pin13**CS-pin4*/#includeSD.h//CS引脚为pin4,这里也沿用官方默认设置constintchipSelect=4;//设定CS接口voidsetup(){Serial.begin(9600);//设置串口通信波特率为9600Serial.print(InitializingSDcard...);//串口输出数据InitializingSDcard...pinMode(10,OUTPUT);if(!SD.begin(chipSelect)){//如果从CS口与SD卡通信失败,串口输出信息Cardfailed,ornotpresentSerial.println(Cardfailed,ornotpresent);//don'tdoanythingmore:return;}Serial.println(cardinitialized.);//与SD卡通信成功,串口输出信息cardinitialized.FiledataFile=SD.open(datalog.txt);//打开datalog.txt文件if(dataFile){while(dataFile.available()){//检查是否dataFile是否有数据Serial.write(dataFile.read());//如果有数据则把数据发送到串口}dataFile.close();//关闭dataFile}else{Serial.println(erroropeningdatalog.txt);//如果文件无法打开串口发送信息erroropeningdatalog.txt}}voidloop(){}复制代码可以看到,DATALOG.TXT文件中的数据都通过串口发送回了电脑。效果如下图:再把下面的代码下载进arduino控制板中,打开串口监控器看看效果。/*此例子展示如何在SD卡中创建于删除文件*SD卡与arduino控制板使用SPI总线连接**MOSI-pin11**MISO-pin12**CLK-pin13**CS-pin4*/#includeSD.hFilemyFile;voidsetup(){Serial.begin(9600);//设置串口通信波特率为9600Serial.print(InitializingSDcard...);//串口输出数据InitializingSDcard...pinMode(10,OUTPUT);if(!SD.begin(4)){//如果从CS口与SD卡通信失败,串口输出信息initializationfailed!Serial.println(initializationfailed!);return;}Serial.println(initializationdone.);//CS口与SD卡通信成功,串口输出信息initializationdone.if(SD.exists(example.txt)){//检查example.txt文件是否存在Serial.println(example.txtexists.);//如果存在输出信息example.txtexists.至串口}else{Serial.println(example.txtdoesn'texist.);//不存在输出信息example.txtdoesn'texist.至串口}Serial.println(Creatingexample.txt...);myFile=SD.open(example.txt,FILE_WRITE);//打开example.txt,如果没有自动创建,写入状态myFile.close();//关闭文件if(SD.exists(example.txt)){Serial.println(example.txtexists.);}else{Serial.println(example.txtdoesn'texist.);}Serial.println(Removingexample.txt...);SD.remove(example.txt);//删除文件example.txtif(SD.exists(example.txt)){Serial.println(example.txtexists.);}else{Serial.println(example.txtdoesn'texist.);}}voidloop(){}复制代码下面图就是串口监视器显示的结果,显示文件创建于删除的过程。再把下面的代码传入arduino控制板,看看效果#includeSD.hFilemyFile;voidsetup(){Serial.begin(9600);Serial.print(InitializingSDcard...);pinMode(10,OUTPUT);if(!SD.begin(4)){Serial.println(initializationfailed!);return;}Serial.println(initializationdone.);myFile=SD.open(test.txt,FILE_WRITE);if(myFile){Serial.print(Writingtotest.txt...);myFile.println(testing1,2,3.);myFile.close();Serial.println(done.);}else{Serial.println(erroropeningtest.txt);}myFile=SD.open(test.txt);if(myFile){Serial.println(test.txt:);while(myFile.available()){Serial.write(myFile.read());}myFile.close();}else{Serial.println(erroropeningtest.txt);}}voidloop(){}复制代码串口监视器中可以看到如下画面把SD卡接入电脑,可以在里面找到TEST.TXT文件,里面的内容如下。

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功