SD Card Module CN: 두 판 사이의 차이

아두위키 : Arduwiki
(새 문서: {{#seo:|title=Arduino Wiki:SD卡模块指南|title_mode=append|keywords=Arduino, 信息科学, 制造学习, 表现评估, SD卡模块, Arduino项目, 顶点项目, Arduino示例代码|description=本指南介绍了如何使用Arduino控制SD卡模块(基本信息、电路、示例代码)。适用于信息科学和制造课程。}} center|class=coders100 == '''概述''' == Arduino SD卡模块是与Arduino板...)
 
 
(같은 사용자의 중간 판 하나는 보이지 않습니다)
197번째 줄: 197번째 줄:


=== 4. 记录传感器数据 ===
=== 4. 记录传感器数据 ===
此示例每3秒记录一次[[土壌湿度传感器(YL-69)]]数据,并将其保存到SD卡中。<syntaxhighlight lang="c++" line="1">
此示例每3秒记录一次[[Soil moisture sensor(YL-69) CN|土壌湿度传感器(YL-69)]]数据,并将其保存到SD卡中。<syntaxhighlight lang="c++" line="1">
#include <SPI.h>
#include <SPI.h>
#include <SD.h>
#include <SD.h>
236번째 줄: 236번째 줄:


==== 执行结果 ====
==== 执行结果 ====
串口监视器会显示“数据记录完成”,并且当将SD卡连接到PC时,可以看到之前创建的TEXT.txt文件和当前记录的MOISTURE.txt文件。您可以在MOISTURE.txt文件中查看土壤湿度传感器(YL-69)的数据。
串口监视器会显示“数据记录完成”,并且当将SD卡连接到PC时,可以看到之前创建的TEXT.txt文件和当前记录的MOISTURE.txt文件。您可以在MOISTURE.txt文件中查看[[Soil moisture sensor(YL-69) CN|土壤湿度传感器(YL-69)]]的数据。
[[파일:SD카드모듈예제4결과.jpg|center|class=coders100]]
[[파일:SD카드모듈예제4결과.jpg|center|class=coders100]]

2025년 3월 27일 (목) 21:23 기준 최신판


概述

Arduino SD卡模块是与Arduino板兼容的SD卡接口模块。它使Arduino板能够读取和写入SD卡,从而在各种项目中用于数据存储、日志记录、文件管理等。

规格

项目 内容
支持卡片 Micro SD卡、Micro SDHC卡(支持高速卡)
电源电平转换 兼容5V和3.3V系统接口
电源供应范围 4.5V - 5.5V,内置3.3V稳压电路
通信接口 标准SPI接口
引脚配置 GND、VCC、MISO、MOSI、SCK、CS
定位孔 4个M2螺丝定位孔(直径2.2mm)

应用示例

电路配置

Arduino引脚编号 SD卡模块
4 CS
11 MOSI
12 MISO
13 SCK
GND GND
5V或3.3V VCC

SD卡格式化

为了开始使用本示例,我们将SD卡格式化为干净的状态。

使用SD卡读卡器连接到PC后,右键点击文件夹并格式化它。

(※ 这不是强制性的!如果SD卡上有重要资料,请务必备份。)

1. 写入SD卡

此示例将“GONGZIPSA”文本写入SD卡,并在内部创建一个文本文件。

#include <SD.h>

File myFile;

void setup() {
  Serial.begin(9600);
  
  // 初始化SD卡
  if (!SD.begin(4)) {
    Serial.println("SD卡初始化失败");
    return;
  }
  
  // 写入文件
  myFile = SD.open("test.txt", FILE_WRITE);
  
  if (myFile) {
    Serial.println("开始写入test.txt文件");
    myFile.println("GONGZIPSA");
    myFile.close();
    Serial.println("文件写入完成");
  } else {
    Serial.println("文件写入失败");
  }
}

void loop() {
  // 不进行任何操作
}

在第15行,除了FILE_WRITE之外,还有READ模式:

模式 描述
FILE_READ 以只读模式打开文件。无法写入文件。如果文件不存在,则无法打开。
FILE_WRITE 以写模式打开文件。如果文件不存在,则会创建该文件。如果文件已存在,则将数据追加到文件末尾,不会覆盖现有内容。

执行结果

2. 从SD卡读取文件

此示例从SD卡读取文件并将其输出到串口监视器。

#include <SD.h>

File myFile;

void setup() {
  Serial.begin(9600);
  
  // 初始化SD卡
  if (!SD.begin(4)) {
    Serial.println("SD卡初始化失败");
    return;
  }
  
  // 读取文件
  myFile = SD.open("test.txt");
  
  if (myFile) {
    Serial.println("开始读取test.txt文件");
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close();
    Serial.println("文件读取完成");
  } else {
    Serial.println("文件读取失败");
  }
}

void loop() {
  // 不进行任何操作
}

执行结果

3. 查看SD卡内文件列表

此示例列出SD卡中的文件,并将文件列表输出到串口监视器。

#include <SD.h>

void setup() {
  Serial.begin(9600);
  
  if (!SD.begin(4)) {
    Serial.println("SD卡初始化失败");
    return;
  }
  
  Serial.println("文件列表:");
  listFiles(SD.open("/"));
}

void loop() {
  // 不进行任何操作
}

void listFiles(File dir) {
  while (true) {
    File entry = dir.openNextFile();
    if (!entry) {
      break; // 没有更多文件
    }
    Serial.print(entry.name());
    if (entry.isDirectory()) {
      Serial.println(" [目录]");
      listFiles(entry); // 递归输出目录内文件
    } else {
      Serial.print(" [文件大小:");
      Serial.print(entry.size());
      Serial.println(" 字节]");
    }
    entry.close();
  }
}

执行结果

4. 记录传感器数据

此示例每3秒记录一次土壌湿度传感器(YL-69)数据,并将其保存到SD卡中。

#include <SPI.h>
#include <SD.h>

void setup() {
  Serial.begin(9600);

  // 初始化SD卡
  if (!SD.begin(4)) {
    Serial.println("SD卡初始化失败");
    return;
  }

  // 初始化YL-69传感器(设置模拟引脚)
  pinMode(A0, INPUT);
}

void loop() {
  // 读取YL-69传感器数据
  int moistureLevel = analogRead(A0);

  // 以FILE_WRITE模式打开moisture.txt文件
  File myFile = SD.open("moisture.txt", FILE_WRITE);
  
  if (myFile) {
    // 将传感器数据写入文件
    myFile.print("Moisture Level: ");
    myFile.println(moistureLevel); // 将数据追加到文件
    myFile.close(); // 关闭文件
    Serial.println("数据记录完成");
  } else {
    Serial.println("文件写入失败");
  }

  delay(3000); // 每3秒记录一次数据
}

执行结果

串口监视器会显示“数据记录完成”,并且当将SD卡连接到PC时,可以看到之前创建的TEXT.txt文件和当前记录的MOISTURE.txt文件。您可以在MOISTURE.txt文件中查看土壤湿度传感器(YL-69)的数据。