вывод информации на microSD и система регулирования температурой
- Войдите на сайт для отправки комментариев
Чт, 01/06/2017 - 15:23
Здравствуйте,я-студент, нужна ваша помощь c проектом.
Есть Arduino uno,датчик температуры и влажности DHT11,модуль microSD,лампа(как нагревательный элемент, и реле.
Нужно обеспечить ведение отчетов о процессах с сохранением на флешку и обеспчить автоматическое управление устройствами(лампой) через реле.
Есть код,но я не могу понять как написать,чтобы датчик считывал информацию,к примеру каждые 30 минут, и сохранял это на флешку,затем реле определяет по эти данным включать лампу или нет
#include <SD.h>
#include <dht.h>
DHT sensor = DHT(); // Датчик температуры и влажности
File sensorDataFile; // Файл в который будут записаны показания с датчика
char* SENSOR_DATA_FILE_NAME = "1.txt"; // Название файла
#define PIN 3
int temp = 0 ;
void setup()
{
Serial.begin(9600);
// Подключаем сенсор к 0 аналоговому порту
sensor.attach(A0);
// Ждем готовность сенсора
delay(1000);
// SPI SS пин должен быть OUTPUT
pinMode(10, OUTPUT);
sensorDataFile.close();
Serial.println("Finished.");
pinMode(PIN, OUTPUT);// Устанавливаем реле
}
void loop()
{
// Инициализируем СД карту
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
// Открываем (или создаем, если его нет) файл для записи данных с датчика
sensorDataFile = SD.open(SENSOR_DATA_FILE_NAME, FILE_WRITE);
for (int i = 0; i < 10; i++)
{
// Проводим 10 замеров
sensor.update();
// Записываем удачные результаты в файл и в порт
if (sensor.getLastError() == DHT_ERROR_OK && sensorDataFile)
{
char msg[128];
sprintf(msg, "Current humidity = %d%% temperature = %dC",
sensor.getHumidityInt(), sensor.getTemperatureInt());
Serial.println(msg);
sensorDataFile.println(msg);
}
delay(2000);
}
sensorDataFile.close();
Serial.println("Finished.");
if (temp < 10) {
digitalWrite(PIN, HIGH);
} else if (temp > 30) {
digitalWrite(PIN, LOW);
}
}
Считаете минуты, каждую минуту сравниваете с 30, если совпало - обнуляем счётчик и мутим активность.
Можно подробней если не сложно,не могу вникнуть как это осуществить
С чем конкретно проблемы?
с датчиком,как считывать его показания каждые 30 минут и чтобы реле принимало решение по этим показаниям
Чёрт побери, какие непонятливые студенты ныне.
Для того, чтобы каждые 30 минут считывать показания, надо иметь какую-то временную привязку, так? Важно ли точное значение этих 30 минут?
Описывайте тогда алгоритм работы реле, что оно должно делать в зависимости от показаний датчика.
2. Со сроками сдачи этой работы.