как выести время и дату для показаний датчика?

elgkaterina
Offline
Зарегистрирован: 03.06.2012

 У меня датчик DHT11 . На com идут значения температуры и влажности, как прописать дату и время принятия данных (каждые 2 сек). Последняя версия Arduino ide

maksim
Offline
Зарегистрирован: 12.02.2012

Куда "прописать" ???

elgkaterina
Offline
Зарегистрирован: 03.06.2012

 вот мой код, надо перед выводом значений, выводить дату

 

 

 

#include "dht11.h"

dht11 DHT11;

#define DHT11PIN 2

void setup()
{
Serial.begin(115200);

}

void loop()
{

int chk = DHT11.read(DHT11PIN);

Serial.print("Read sensor: ");
switch (chk)
/ {
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}

Serial.print("Humidity (%): ");

Serial.println((float)DHT11.humidity, 2);

Serial.print("Temperature (C): ");
Serial.println((float)DHT11.temperature, 2);

delay(2000);
}

maksim
Offline
Зарегистрирован: 12.02.2012

Отредактируйте ваше сообщение с кодом Вставка программного кода в тему/комментарий

Для того, чтобы дуина выводила реальное время и дату вам нужен таймер реального времени, например DS1307. 

elgkaterina
Offline
Зарегистрирован: 03.06.2012

 

#include "dht11.h"

dht11 DHT11;

#define DHT11PIN 2

void setup()
{
  Serial.begin(115200);
 
}

void loop()
{
  
  int chk = DHT11.read(DHT11PIN);

 // Serial.print("Read sensor: ");
//  switch (chk)
//  {
//    case DHTLIB_OK: 
//		Serial.println("OK"); 
//		break;
 //   case DHTLIB_ERROR_CHECKSUM: 
//		Serial.println("Checksum error"); 
//		break;
 //   case DHTLIB_ERROR_TIMEOUT: 
//		Serial.println("Time out error"); 
//		break;
  //  default: 
//		Serial.println("Unknown error"); 
//		break;
// }

// Serial.print("Humidity (%): ");
  //Serial.print("n");
  
  Serial.print((float)DHT11.humidity, 2);
  Serial.print(",");
 //Serial.print("Temperature (C): ");
  Serial.println((float)DHT11.temperature, 2);
 // Serial.println("X");
  delay(2000);
}

 

elgkaterina
Offline
Зарегистрирован: 03.06.2012

 Пока закомпентированно ненужное, просто две цифры на выходе

36.00,24.00

Вы не могли бы подробно описать. что делать?

maksim
Offline
Зарегистрирован: 12.02.2012

Нужна микросхема реального времени, например DS1307, которую нужно подключить к дуине. Можно и програмные часы сделать, но они будут сбрасываться при каждом ресете дуины и как я знаю точьность у них так себе. Если интересно то вот тема, а вот здесь готовая библа имеется.

leshak
Offline
Зарегистрирован: 29.09.2011

 Если все это работает в связке с компом, а не автономно, то гораздо проще "приписыватьв время" на строне компа. Типа "принял от ардуино данные и записал время во сколько принял".

Либо свою прожку наваять, либо взять терминалную программу, посерьезней ардуиновского serial monitor. Многие терминальные проги умеют добавлять время в лог. В этом случае вообще ничего делать не нужно.

Я, например, пользуюсь "Terminal 1.9b". Она это умеет (и еще кучу ништяков ;) . Только галку включить в настройках.  

Fess
Fess аватар
Offline
Зарегистрирован: 26.10.2011

 проше через скрипт - запись в бд - вывел на экран  (в БД создать таблицу с тайм штампом, можно еще автоинкримент ID сделать, и через println выводить красивенько на web морду к примеру последнюю или последние 5-10 записей)

 

А если нужно через Serial выводить даты + температура , тогда Ардуина ж должна где то эту дату взять ... где то видел шилд времени или как то так, и наверное у Вас нет Ethernet Shild`a ?

elgkaterina
Offline
Зарегистрирован: 03.06.2012

 Нет Ethernet Shild`a, в том-то и дело. 

Fess
Fess аватар
Offline
Зарегистрирован: 26.10.2011

leshak пишет:

 

Либо свою прожку наваять, либо взять терминалную программу, посерьезней ардуиновского serial monitor. Многие терминальные проги умеют добавлять время в лог. В этом случае вообще ничего делать не нужно.

Я, например, пользуюсь "Terminal 1.9b". Она это умеет (и еще кучу ништяков ;) . Только галку включить в настройках.  

 

тогда вот и правда хорошее решение для Вас.

leshak
Offline
Зарегистрирован: 29.09.2011

elgkaterina пишет:

 Нет Ethernet Shild`a, в том-то и дело. 

Совсем не  в этом дело. Ethernet Shild - это способ связи, не более того. В вопросах времени - он ничем не лучше чем Serial. Это как два человека разговаривают по телефону. Разницы нет, по мобилке или по проводному. Важно ЧТО они говорят. Если один не знает "который час", то он второму никак об этом сказать не может.

Возвращаясь к вашей задаче. Вам нужно решить "кто будет добалять временную метку" к данным. Ардуино или комп?

Если ардуина, то он сама должна знать "который час". Без "внешней помощи" - она знает только "сколько времени прошло с момента ее включения". Функция millis(). Для большинства задач этого достаточно. Если нужно "настоящие время", то значит вначале она должна узнать его "у кого-то снаружи". Запросить комп (а он должен сообщить),или спросить RTS микруху, или узнать время у  GPS модуля и т.п.

Если "комп". То тут тоже два варианта. Либо ищем софт который это уже умеет (валом есть), либо пишем свой (тривиальный), который принимает данные и фиксирует время "когда они пришли". В базу, в текстовый файл, на принтер.....

elgkaterina
Offline
Зарегистрирован: 03.06.2012

   Последний - самый подходящий вариант. С готовым софтом не пойдет, задание состоит в том, чтоб самому додуматься. Конечно, я пробовала и софт использовать, там записб даты в логах, но эт не то. Пробовала запукать уже готовые часы с библиотеками, но там старые версии, и на баблиотеки новая ардуинка ругается. я сама в них не очень разбираюсь, так что вот ищу.

У меня есть программа на visual studio 2010, выодит оба показателя в текстбоксы, вот туда мне еще и время надо будет пристроить.

leshak
Offline
Зарегистрирован: 29.09.2011

 

TextBox1.value+=string.Format(" Время:{0},Значение:{1}\r\n",DateTime.Now,readedData);

 

elgkaterina
Offline
Зарегистрирован: 03.06.2012

 

А если просто системное время и дату. Поставить таймер, только как с ним работать?

А можно эти показатели занести в базу MySQL? Кто-нибудь работал с mySQL из VB? в табличку в базе каждые пять минут добавлять два значения.