вывод информации на 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. Со сроками сдачи этой работы.