雷达传感器也遇到了问题最终原因查明仍然是需要接入5v电压的问题
#include <SPI.h>
#include <SD.h>
#include <SoftwareSerial.h>
#include <HMMD_Radar.h>
// 自定义SPI引脚定义
#define SD_CS_PIN 10 // 片选引脚
#define SD_MOSI_PIN 2 // 主输出从输入
#define SD_MISO_PIN 1 // 主输入从输出
#define SD_SCK_PIN 3 // 时钟引脚
// 定义UART和引脚
#define RADAR_RX_PIN 20
#define RADAR_TX_PIN 21
SoftwareSerial mySerial(RADAR_TX_PIN, RADAR_RX_PIN);
File dataFile;
const char* filename = "/data.txt"; // 存储数据的文件名
void setup() {
Serial.begin(115200);
Serial.println("Initializing SD card...");
// 初始化自定义SPI引脚
SPI.begin(SD_SCK_PIN, SD_MISO_PIN, SD_MOSI_PIN, SD_CS_PIN);
// 初始化SD卡
if (!SD.begin(SD_CS_PIN, SPI, 1000000)) {
Serial.println("SD初始化失败");
return;
} else {
Serial.println("SD初始化成功");
}
// 检查文件是否存在,如果不存在则创建并写入标题行
if (!SD.exists(filename)) {
dataFile = SD.open(filename, FILE_WRITE);
if (dataFile) {
dataFile.println("Timestamp,Data"); // 添加标题行
dataFile.close();
Serial.println("Created new file with headers.");
} else {
Serial.println("Error creating file!");
}
}
Serial1.begin(115200, SERIAL_8N1, RADAR_TX_PIN, RADAR_RX_PIN); // UART1 初始化
}
void loop() {
if (Serial1.available()) {
String line = Serial1.readStringUntil('\n'); // 按行读取 UART1 数据
line.trim(); // 去除多余的 \r 或空格
if (line.length() > 0) {
Serial.println("接收到: " + line);
// 将数据写入SD卡
dataFile = SD.open(filename, FILE_APPEND);
if (dataFile) {
// 添加时间戳(以毫秒为单位)
dataFile.print(millis());
dataFile.print(",");
dataFile.println(line);
dataFile.close();
Serial.println("数据已写入SD卡");
} else {
Serial.println("错误:无法打开文件进行写入!");
}
}
}
delay(10);
}