arduino学习笔记18SD卡读写实验教程文件.docx

上传人:b****6 文档编号:5578238 上传时间:2022-12-28 格式:DOCX 页数:14 大小:636.29KB
下载 相关 举报
arduino学习笔记18SD卡读写实验教程文件.docx_第1页
第1页 / 共14页
arduino学习笔记18SD卡读写实验教程文件.docx_第2页
第2页 / 共14页
arduino学习笔记18SD卡读写实验教程文件.docx_第3页
第3页 / 共14页
arduino学习笔记18SD卡读写实验教程文件.docx_第4页
第4页 / 共14页
arduino学习笔记18SD卡读写实验教程文件.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

arduino学习笔记18SD卡读写实验教程文件.docx

《arduino学习笔记18SD卡读写实验教程文件.docx》由会员分享,可在线阅读,更多相关《arduino学习笔记18SD卡读写实验教程文件.docx(14页珍藏版)》请在冰豆网上搜索。

arduino学习笔记18SD卡读写实验教程文件.docx

arduino学习笔记18SD卡读写实验教程文件

 

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

*/

#include

//CS引脚为pin4,这里也沿用官方默认设置

constintchipSelect=4;  //设定CS接口

voidsetup()

{

  Serial.begin(9600);  //设置串口通信波特率为9600

  Serial.print("InitializingSDcard...");  //串口输出数据InitializingSDcard...

  pinMode(10,OUTPUT);

  

  

  if(!

SD.begin(chipSelect)){  //如果从CS口与SD卡通信失败,串口输出信息Cardfailed,ornotpresent

  Serial.println("Cardfailed,ornotpresent");

  return;

  }

  Serial.println("cardinitialized.");  //与SD卡通信成功,串口输出信息cardinitialized.

}

voidloop()

{

  //定义数组

  StringdataString="";

  //读取三个传感器值,写入数组

  for(intanalogPin=0;analogPin<3;analogPin++){

  intsensor=analogRead(analogPin);

  dataString+=String(sensor);

  if(analogPin<2){

    dataString+=","; 

  }

  }

  //打开文件,注意在同一时间只能有一个文件被打开

  //如果你要打开另一个文件,就需要先关闭前一个

  FiledataFile=SD.open("datalog.txt",FILE_WRITE);  

  //打开datalog.txt文件,读写状态,位置在文件末尾。

  if(dataFile){

  dataFile.println(dataString);

  dataFile.close();

  //数组dataString输出到串口

  Serial.println(dataString);

  }  

  //如果无法打开文件,串口输出错误信息erroropeningdatalog.txt

  else{

  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

*/

#include

//CS引脚为pin4,这里也沿用官方默认设置

constintchipSelect=4;  //设定CS接口

voidsetup()

{

  Serial.begin(9600);  //设置串口通信波特率为9600

  Serial.print("InitializingSDcard...");  //串口输出数据InitializingSDcard...

  pinMode(10,OUTPUT);

  

  if(!

SD.begin(chipSelect)){  //如果从CS口与SD卡通信失败,串口输出信息Cardfailed,ornotpresent

  Serial.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

      

*/

#include

FilemyFile;

voidsetup()

{

  Serial.begin(9600);  //设置串口通信波特率为9600

  Serial.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.txt

  if(SD.exists("example.txt")){ 

  Serial.println("example.txtexists.");

  }

  else{

  Serial.println("example.txtdoesn'texist.");  

  }

}

voidloop()

{

}

复制代码

下面图就是串口监视器显示的结果,显示文件创建于删除的过程。

 

再把下面的代码传入arduino控制板,看看效果

#include

FilemyFile;

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文件,里面的内容如下。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1