18 - SD卡读写实验
更新时间:2023-08-14 13:07:01 阅读量: 人文社科 文档下载
- 18年世界杯冠军推荐度:
- 相关推荐
先看一下硬件连接图
把下面代码下载进
arduino控制板
/*
此例子展示如果记录三个模拟引脚数值到SD卡,使用SD库。
电路部分
* 模拟引脚使用模拟口0,1,2大家可以根据情况接入模拟传感器,
如果没有,也可以完成此实验,只不过数值是不停跳动的干扰源。
* SD卡与arduino控制板使用SPI总线连接
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
*/
#include <SD.h>
// CS引脚为pin4,这里也沿用官方默认设置
constintchipSelect = 4; //设定CS接口
void setup()
{
Serial.begin(9600); //设置串口通信波特率为9600
Serial.print("Initializing SD card..."); //串口输出数据Initializing SD card...
pinMode(10, OUTPUT);
if (!SD.begin(chipSelect)) { //如果从CS口与SD卡通信失败,串口输出信息Card failed, or not present
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized."); //与SD卡通信成功,串口输出信息card initialized. }
void loop()
{
// 定义数组
String dataString = "";
// 读取三个传感器值,写入数组
for (intanalogPin = 0; analogPin< 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin< 2) {
dataString += ",";
}
}
// 打开文件,注意在同一时间只能有一个文件被打开
// 如果你要打开另一个文件,就需要先关闭前一个
File dataFile = SD.open("datalog.txt", FILE_WRITE);
// 打开datalog.txt文件,读写状态,位置在文件末尾。
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// 数组dataString输出到串口
Serial.println(dataString);
}
// 如果无法打开文件,串口输出错误信息error opening datalog.txt
else {
Serial.println("error opening datalog.txt");
}
}
控制板开始工作后会看到如下画面,图中每一行上就是每次记录的三个
传感器数值,本次实验并没有接传感器,所以数值是周围干扰源的杂乱信号。
关闭arduino电源后把
SD卡取出,接入电脑后,可以看到SD卡中有一个DATALOG.TXT文件,打开后有可以看到,此文件中的信息就是记录下的各个传感器的数值。
第一个代码实验完以后,SD
卡中的DATALOG.TXT不要删除,把下面代码下载进arduino中,打开串口监视器,看看效果。
/*
这个例子展示如何通过SD库从SD卡中读取一个文件,并且把数据通过串口发送。
* SD卡与arduino控制板使用SPI总线连接
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
*/
#include <SD.h>
// CS引脚为pin4,这里也沿用官方默认设置
constintchipSelect = 4; //设定CS接口
void setup()
{
Serial.begin(9600); //设置串口通信波特率为9600
Serial.print("Initializing SD card..."); //串口输出数据Initializing SD card...
pinMode(10, OUTPUT);
if (!SD.begin(chipSelect)) { //如果从CS口与SD卡通信失败,串口输出信息Card failed, or not present
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized."); //与SD卡通信成功,串口输出信息card initialized.
File dataFile = SD.open("datalog.txt"); //打开datalog.txt文件
if (dataFile) {
while (dataFile.available()) { //检查是否dataFile是否有数据
Serial.write(dataFile.read()); //如果有数据则把数据发送到串口
}
dataFile.close(); //关闭dataFile
}
else {
Serial.println("error opening datalog.txt"); //如果文件无法打开串口发送信息error opening datalog.txt
}
}
void loop()
{
}
可以看到,DATALOG.TXT文件中的数据都通过串口发送回了电脑。效果如下图:
再把下面的代码下载进
arduino控制板中,打开串口监控器看看效果。
/*
此例子展示如何在SD卡中创建于删除文件
* SD卡与arduino控制板使用SPI总线连接
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
*/
#include <SD.h>
File myFile;
void setup()
{
Serial.begin(9600); //设置串口通信波特率为9600
Serial.print("Initializing SD card..."); //串口输出数据Initializing SD card...
pinMode(10, OUTPUT);
if (!SD.begin(4)) { //如果从CS口与SD卡通信失败,串口输出信息initialization failed! Serial.println("initialization failed!");
return;
}
Serial.println("initialization done."); //CS口与SD卡通信成功,串口输出信息initialization done.
if (SD.exists("example.txt")) { //检查example.txt文件是否存在
Serial.println("example.txt exists."); //如果存在输出信息example.txt exists.至串口 }
else {
Serial.println("example.txt doesn't exist."); //不存在输出信息example.txt doesn't exist.至串口 }
Serial.println("Creating example.txt...");
myFile = SD.open("example.txt", FILE_WRITE); //打开example.txt,如果没有自动创建,写入状态
myFile.close(); //关闭文件
if (SD.exists("example.txt")) {
Serial.println("example.txt exists.");
}
else {
Serial.println("example.txt doesn't exist.");
}
Serial.println("Removing example.txt...");
SD.remove("example.txt"); //删除文件example.txt
if (SD.exists("example.txt")){
Serial.println("example.txt exists.");
}
else {
Serial.println("example.txt doesn't exist.");
}
}
void loop()
{
}
下面图就是串口监视器显示的结果,显示文件创建于删除的过程。
再把下面的代码传入arduino控制板,看看效果
#include <SD.h>
File myFile;
void setup()
{
Serial.begin(9600);
Serial.print("Initializing SD card...");
pinMode(10, OUTPUT);
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
myFile.close();
Serial.println("done.");
} else {
Serial.println("error opening test.txt");
}
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
} else {
Serial.println("error opening test.txt");
}
}
void loop()
{
}
串口监视器中可以看到如下画面
把
SD卡接入电脑,可以在里面找到TEST.TXT文件,里面的内容如下。
正在阅读:
18 - SD卡读写实验08-14
论改革开放的得与失10-01
关于沟通的心得体会作文范文5篇合集04-16
国税公务员入党申请书范文09-08
给水管网设计计算说明书05-28
育子心得体会范文11-21
“十三五”规划重点-工程建筑机械项目建议书(立项报告)09-06
《二次函数的图象和性质——22.1.2 二次函数y=ax2的图象和性质》04-24
有机化学总结(手打的啊!)02-01
梁漱溟与毛泽东的交往08-15
- 粮油储藏基础知识
- 论文范文(包括统一封面和内容的格式)
- 经典解题方法
- 综合部后勤办公用品管理办法+领用表
- 学生宿舍突发事件应急预案
- 16秋浙大《生理学及病理生理学》在线作业
- 四分比丘尼戒本(诵戒专用)
- 浙江财经大学高财题库第一章习题
- 九大员岗位职责(项目经理、技术负责人、施工员、安全员、质检员、资料员、材料员、造价员、机管员)
- 旅游财务管理习题(学生版)
- 德阳外国语高二秋期入学考试题
- 投资学 精要版 第九版 第11章 期权市场
- 控制性详细规划城市设计认识
- bl03海运提单3国际贸易答案
- 2010-2011学年湖北省武汉市武珞路中学七年级(上)期中数学试卷
- VB程序填空改错设计题库全
- 教师心理健康案例分析 - 年轻班主任的心理困惑
- 民间借贷司法解释溯及力是否适用?
- 三联书店推荐的100本好书
- 《化工原理》(第三版)复习思考题及解答
- 读写
- 实验
- 18
- 技术标 50页
- 2013高中新课程数学(苏教版必修四)《2.2.2 向量的减法》
- 吉林大学2021年3月考试《第三代移动通信》作业考核试题
- 港安驾校路考试题 2014
- 内科学期末考试卷A
- 天蓝色彼岸
- 罗克韦尔的DCS冗余系统在造纸行业的应用研究
- 蜂蜜柑橘果醋饮料生产工艺研究
- 中铁六局石太客运专线Z11标段项目部安全质量奖罚规定(修改稿)
- 清代河南朱仙镇的商业_以山陕会馆碑刻资料为中心的考察
- 2007年本科英语美国文学史复习资料
- 2006年全县经济工作会县长讲话
- 巴菲特和索罗斯23个制胜的投资习惯
- 郑州大学材料科学与工程学院硕士研究生复试分数线
- 投资学6 K线理论
- 分区工具DiskGenius使用详解
- 化学实验操作考试练习题
- 南京六诚区教师招聘笔试试题大全
- 远离灾害事故
- 嵌入VISION的cvi程序