Использовать 2 DHT22 И ПЕРЕДАВАТЬ ДАННЫЕ НА SD?

У меня есть код для передачи данных с dht22 на SD, но только для одного, и я хочу передать данные из 1 dht22 с одним файлом и данные с другого датчика в другой файл и войти в систему на SD. Кто-нибудь может мне помочь?

#include
#include
#include "DHT.h"
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
File data_file;

int CS_pin = 10;
long sec=00;
long mint=00;
long hr=00;

void setup() {
Serial.begin(9600);
pinMode(CS_pin, OUTPUT);
dht.begin(); //Эта команда начнет получать значения из dht22
// Инициализация SD-карты
if (SD.begin())
{
Serial.println("SD card is initialized and it is ready to use");
} else
{
Serial.println("SD card is not initialized");
return;
}
}

void loop() {
data_file = SD.open("data.txt", FILE_WRITE);
if (data_file) {
getData();
}
// если файл не открылся, выводим ошибку:
else {
Serial.println("error opening data.txt");
}
delay(1000);
}

void getData(){
for(long sec = 00; sec < 60; sec=sec+2){
float temp = dht.readTemperature(); //Чтение температуры в градусах Цельсия и сохранение в temp
data_file.print(hr);
data_file.print(":");
data_file.print(mint);
data_file.print(":");
data_file.print(sec);
data_file.print(", ");
data_file.println(temp);
Serial.print(hr);
Serial.print(":");
Serial.print(mint);
Serial.print(":");
Serial.print(sec);
Serial.print(", ");
Serial.println(temp);
if(sec>=58){
mint= mint + 1;
}
if (mint>59){
hr = hr + 1;
mint = 0;
}
data_file.flush(); //сохраняем файл
delay(2000);
}
data_file.close(); //закрываем файл
}

Спасибо

, 👍0

Обсуждение

Непонятно, о чем вы спрашиваете. Вы хотите собрать данные с 2 датчиков? Какие 2 файла вы имеете в виду? У вас есть 2 исходных файла? Как они структурированы? Зачем вам 2 исходных файла? Почему бы не написать функцию, собирающую данные с двух датчиков?, @Duncan C

Мне было совершенно ясно, в чем заключался вопрос. И ОП также признал это в своем комментарии под моим ответом..., @oh.dae.su

@oh.dae.su ты лучший мужчина (или женщина), чем я. Я понял, что это означает два разных файла эскизов, но вывод данных в два разных файла на SD-карте имеет гораздо больше смысла., @Duncan C

@Duncan C, мой комментарий не был задуман как прямой ответ вам, а в целом был ответом на вопрос, который был отложен как неясный... ;-), @oh.dae.su


1 ответ


Лучший ответ:

1

Сначала вам необходимо настроить второй датчик DHT и второй файл. Замените X на номер контакта, к которому подключен второй датчик после #define DHTPIN2

#define DHTPIN 8
#define DHTPIN2 X
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
File data_file, data_file2;

В setup() вам также необходимо запустить второй датчик dht:

dht.begin(); //Эта команда начнет получать значения из dht22
dht2.begin(); //Эта команда начнет получать значения из dht22

В loop() вам нужно открыть второй файл данных в дополнение к первому:

data_file = SD.open("data.txt", FILE_WRITE);
if (data_file) {
getData();
}
// если файл не открылся, выводим ошибку:
else {
Serial.println("error opening data.txt");
}
data_file2 = SD.open("data2.txt", FILE_WRITE);
if (data_file2) {
getData2();
}
// если файл не открылся, выводим ошибку:
else {
Serial.println("error opening data2.txt");
}

Хотя это и не самое эффективное/элегантное решение, вам потребуется дублировать функцию void getData() как void getData2() для работы со вторым датчиком/файлом. , заменив dht на dht2 и data_file на data_file2. Это приведет к последовательной регистрации данных на двух датчиках.
Если вы хотите, чтобы регистрация осуществлялась параллельно, вам необходимо добавить измерение и запись второго датчика/файла в функцию void getData().

,

Спасибо за вашу помощь. Теперь наконец-то я могу это сделать ;), @Some One

Пожалуйста. Рад, что смог помочь. Кстати. пожалуйста, прочитайте страницу тура по обмену стеками https://arduino.stackexchange.com/tour, чтобы узнать, как все работает на этом сайте, например, как поступать с ответами на ваши вопросы., @oh.dae.su

Я не знаю почему, но программа теперь говорит, что файл не называет тип., @Some One

@jawad bouhali, пожалуйста, задайте отдельный вопрос, включая код и точное сообщение об ошибке, или отредактируйте свой вопрос и добавьте к нему эту информацию., @oh.dae.su