以下是Arduino Uno使用SD卡模块的详细指南,包含程序示例和注意事项:
1. 所需材料
Arduino Uno开发板
SD卡模块(支持SPI接口,如常见的MicroSD模块)
MicroSD卡(建议容量≤32GB,格式化为FAT16/FAT32)
杜邦线若干
2. 硬件连接
将SD卡模块与Arduino Uno按以下方式连接:
SD卡模块引脚 Arduino引脚
VCC 5V
GND GND
MISO 12
MOSI 11
SCK 13
CS(片选) 任意数字引脚(示例中使用引脚4)
3. 安装库文件
Arduino IDE自带SD.h库,无需额外安装。若缺失,可通过IDE的库管理器搜索安装。
4. 示例程序:读写SD卡
写入数据到SD卡
cpp
Copy Code
#include <SPI.h>
#include <SD.h>
File myFile;
const int chipSelect = 4; // 片选引脚
void setup() {
Serial.begin(9600);
while (!Serial); // 等待串口连接(仅用于调试)
if (!SD.begin(chipSelect)) {
Serial.println("SD卡初始化失败!");
return;
}
Serial.println("SD卡初始化完成。");
// 创建/打开文件并写入数据
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile) {
myFile.println("Hello, Arduino SD Card!");
myFile.close();
Serial.println("数据写入完成。");
} else {
Serial.println("打开文件失败!");
}
}
void loop() {
// 空循环
}
从SD卡读取数据
cpp
Copy Code
#include <SPI.h>
#include <SD.h>
File myFile;
const int chipSelect = 4;
void setup() {
Serial.begin(9600);
while (!Serial);
if (!SD.begin(chipSelect)) {
Serial.println("初始化失败!");
return;
}
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("文件内容:");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
} else {
Serial.println("无法打开文件!");
}
}
void loop() {}
5. 常见问题排查
初始化失败
检查接线是否正确(尤其是MISO/MOSI/SCK)
确保SD卡格式化为FAT16/FAT32
尝试更换片选引脚(如引脚10)
检查供电是否充足(部分模块需5V,部分需3.3V)
文件无法打开
确认文件名正确(区分大小写)
确保文件路径存在(如SD.open("/folder/test.txt"))
数据写入不完整
操作完成后务必执行myFile.close()
避免频繁写入,防止卡顿
6. 扩展功能
创建目录:SD.mkdir("mydir");
删除文件:SD.remove("test.txt");
列表文件:使用File root = SD.open("/"); root.rewindDirectory();
通过以上步骤,您可以在Arduino Uno上实现基本的SD卡读写操作。建议使用带有电平转换的SD卡模块以确保稳定性。
|