前言
具体SD卡接线可以参考 Arduino读写SD卡模块(获得SD卡信息)
本篇博客使用温湿度传感器DHT22来举例,至于其他的传感器大家可以举一反三
硬件准备
SD卡模块
温湿度传感器DHT22
DHT22 | Arduino |
---|---|
+ | 5V |
S | 7 |
GND | GND |
代码部分
温湿度检测
#include <dht.h>
#define DHTPin 7
dht DHT;
void loop() {
int readData = DHT.read22(DHTPin);
float t = DHT.temperature;
float h = DHT.humidity;
Serial.print("Temperature = ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(" Humidity = ");
Serial.print(h);
Serial.println(" % ");
创建.txt文件
myFile = SD.open("可以自主命名.txt", FILE_WRITE);
写入SD卡的函数:“myFile”
if (myFile) {
myFile.print("Temperature = ");
myFile.print(t);
myFile.print(",");
myFile.print(" Humidity = ");
myFile.println(h);
myFile.close(); //结束文件记录
}
判断文件是否可以打开
else {
Serial.println("error opening data.txt");
}
完整代码
#include <SD.h>
#include <SPI.h>
#include <dht.h>
#define DHTPin 7
dht DHT;
File myFile;
int pinCS = 4;
void setup() {
Serial.begin(9600);
pinMode(pinCS, OUTPUT);
// SD Card Initialization
if (SD.begin())
{
Serial.println("SD card is ready to use.");
} else
{
Serial.println("SD card initialization failed");
return;
}
}
void loop() {
int readData = DHT.read22(DHTPin);
float t = DHT.temperature;
float h = DHT.humidity;
Serial.print("Temperature = ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(" Humidity = ");
Serial.print(h);
Serial.println(" % ");
myFile = SD.open("data.txt", FILE_WRITE);
if (myFile) {
myFile.print("Temperature = ");
myFile.print(t);
myFile.print(",");
myFile.print(" Humidity = ");
myFile.println(h);
myFile.close(); // close the file
}
else {
Serial.println("error opening data.txt");
}
delay(500);
}
效果图
查看SD卡中DATA.txt
数据成功写入!!!
后记补充
我们可以使用SD卡记录的数据绘制表格和折线图等
在将其绘制成折线图
祝你顺利!!!