18 - SD卡读写实验
更新时间:2023-05-31 14:55: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卡读写实验05-31
老人辞世悼词怎么写05-28
山西省重点中学协作体2017届高三第二次适应性考试英语试题(含答案)01-06
单片机实验四 I O显示控制实验(数码管显示实验)09-17
六一主持词开场白4篇08-22
华为产品开发项目计划模板(转载)12-11
A Comparative Study of Chinese and English Proverbs 英语专业毕业论文04-29
学生会安检部工作计划03-16
基于单片机的函数发生器论文08-21
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 读写
- 实验
- 18
- 中铁六局石太客运专线Z11标段项目部安全质量奖罚规定(修改稿)
- 罗克韦尔的DCS冗余系统在造纸行业的应用研究
- 星玛电梯MMR调试手册1
- 脉高压症门静脉血栓形成的机制研究
- 计算机一级考试(第三套)笔试模拟试卷
- 公路检测技术应用与检测质量控制策略探索 李琼
- 威华股份(002240):中(高)
- 今天我们如何教语文
- 数据库判断题全集
- 初一历史2013-2014学年下学期期中考试卷及答案(人教版)
- 2006年全县经济工作会县长讲话
- 内科学期末考试卷A
- autocad2010 常见问题解答
- 中央广播电视大学2006—2007学年度第一学期“开放本科”期末考试法学劳动法学试题
- 2008年GCT英语真题及答案解析
- 原子物理学-习题解答(第七章)粒子物理
- Design of an economics-based software infrastructure for secure utility computing on superc
- 湖北省卫生厅办公室文件
- 2012高考山东卷物理试题评析
- 飞思卡尔基于HCS12嵌入式开发Chapter2&Chapter4