Использовать 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(); //закрываем файл
}
Спасибо
@Some One, 👍0
Обсуждение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
- Запись данных с нескольких датчиков в пакетном режиме в ардуино
- Используйте 2 DHT22 и передайте данные на SD. Данные файла ошибок не существуют.
- Какова работа pulseIn?
- Как увеличить скорость записи на SD-карту в Ардуино
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- DS18B20 дает высокие показания. Как заставить его вернуть правильную температуру?
- Какой тип разъема использует система GROVE?
Непонятно, о чем вы спрашиваете. Вы хотите собрать данные с 2 датчиков? Какие 2 файла вы имеете в виду? У вас есть 2 исходных файла? Как они структурированы? Зачем вам 2 исходных файла? Почему бы не написать функцию, собирающую данные с двух датчиков?, @Duncan C
Мне было совершенно ясно, в чем заключался вопрос. И ОП также признал это в своем комментарии под моим ответом..., @oh.dae.su
@oh.dae.su ты лучший мужчина (или женщина), чем я. Я понял, что это означает два разных файла эскизов, но вывод данных в два разных файла на SD-карте имеет гораздо больше смысла., @Duncan C
@Duncan C, мой комментарий не был задуман как прямой ответ вам, а в целом был ответом на вопрос, который был отложен как неясный... ;-), @oh.dae.su