Снимаю данные о температуре через Ардуино раз в 10 минут.
Но проблема текущего кода в том, что после включения платы приходится ждать 10 минут до первых показаний. Не пойму как сделать так, чтобы после включения считалось один раз, а потом раз в 10 минут.
Вот весь скетч:
#include <SPI.h>
#include <Ethernet.h>
#include <iarduino_RTC.h>
//#include <SD.h>
iarduino_RTC time(RTC_DS1307);
//#include <Arduino.h>
#include <TM1637Display.h>
#include <OneWire.h>
#include <DallasTemperature.h>
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0x57, 0x57 }; //mac адрес сетевухи
IPAddress ip(192, 168, 157, 157); //ip сетевухи
EthernetServer server(80); //имя и порт web сервера
//Пины подключения дисплея
#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);
OneWire oneWire(4); //Пин датчика температуры 18b20
DallasTemperature ds(&oneWire);
unsigned long timing; // Переменная для хранения точки отсчета
void setup()
{
Ethernet.begin(mac, ip);
time.begin();
server.begin();
ds.begin();
// Serial.begin(9600);
// time.settime(0,11,16,5,2,21,5);
}
void loop()
{
// Serial.println(time.gettime("d-m-Y, H:i:s, D"));
if (millis() - timing > 600000) { // Пауза 10 минут
timing = millis();
ds.requestTemperatures(); //считываем температуру с датчиков, на это требуется 750мс
}
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
display.setBrightness(0x0f);
// Show decimal numbers with/without leading zeros
display.showNumberDec(ds.getTempCByIndex(0));
EthernetClient client = server.available();
client.println ("<!DOCTYPE HTML><html><head>");
client.println ("<meta http-equiv='refresh' content='60';><meta charset='utf-8'>");
client.println ("<title>Smart House</title></head><body align='center'>");
client.println("<h1><font face='Arial'>");
client.println(time.gettime("H:i"));
client.println("</h1>");
client.println("<h3>");
client.println(time.gettime("d.m.Y"));
client.println("</font></h3>");
client.println("<p><font size='55' color='red' face='Arial Black'>");
client.println (round(ds.getTempCByIndex(0)));
client.println (" °C");
client.println("</font></p>");
client.println ("</body></html>");
client.stop();
}