|
@@ -62,11 +62,11 @@ void init()
|
|
|
|
|
|
WifiStation.waitConnection(connectOk, 20, connectFail); // We recommend 20+ seconds for connection timeout at start
|
|
|
|
|
|
- // ðàç â ìèíóòó?
|
|
|
+ // раз в минуту?
|
|
|
procTimer.initializeMs(60000, process).start();
|
|
|
process();
|
|
|
|
|
|
- // îáíîâëåíèå ýêðàíà äâà ðàçà â ñåêóíäó
|
|
|
+ // обновление �крана два раза в �екунду
|
|
|
displayTimer.initializeMs(500, showTime).start();
|
|
|
}
|
|
|
|
|
@@ -75,51 +75,95 @@ void showTime()
|
|
|
static int8_t oldHour, oldMinute;
|
|
|
static time_t oldTime;
|
|
|
DateTime dt;
|
|
|
- int16_t *year;
|
|
|
|
|
|
Time = SystemClock.now();
|
|
|
|
|
|
+ dt.setTime(Time);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * теперь в dt у на� �ледующее:
|
|
|
+ * int8_t Hour;
|
|
|
+ * int8_t Minute;
|
|
|
+ * int8_t Second;
|
|
|
+ * int16_t Milliseconds;
|
|
|
+ * int8_t Day;
|
|
|
+ * int8_t DayofWeek; -- Sunday is day 0
|
|
|
+ * int8_t Month; // Jan is month 0
|
|
|
+ * int16_t Year; // Full Year numer
|
|
|
+ */
|
|
|
+ int8_t si = dt.Second / 5;
|
|
|
+
|
|
|
if (oldTime != Time)
|
|
|
{
|
|
|
oldTime = Time;
|
|
|
- dt.setTime(Time);
|
|
|
-
|
|
|
- /*
|
|
|
- * òåïåðü â dt ó íàñ ñëåäóþùåå:
|
|
|
- * int8_t Hour;
|
|
|
- * int8_t Minute;
|
|
|
- * int8_t Second;
|
|
|
- * int16_t Milliseconds;
|
|
|
- * int8_t Day;
|
|
|
- * int8_t DayofWeek; -- Sunday is day 0
|
|
|
- * int8_t Month; // Jan is month 0
|
|
|
- * int16_t Year; // Full Year numer
|
|
|
- */
|
|
|
+ switch (si)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ case 2:
|
|
|
+ case 4:
|
|
|
+ case 6:
|
|
|
+ case 8:
|
|
|
+ case 10:
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT5, (int)(SensorT)/10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT6, (int)(SensorT)%10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT7, SYM_Temp);
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ case 3:
|
|
|
+ case 7:
|
|
|
+ case 9:
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT5, (int)(SensorH)/10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT6, (int)(SensorH)%10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT7, SYM_H);
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ case 11:
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT5, SYM_BLANK);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT6, dt.DayofWeek/10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT7, dt.DayofWeek%10);
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
- MAX7219_writeData(MAX7219_DIGIT2, SYM_Minus);
|
|
|
if (oldMinute != dt.Minute)
|
|
|
{
|
|
|
oldMinute = dt.Minute;
|
|
|
- MAX7219_writeData(MAX7219_DIGIT3, dt.Minute/10);
|
|
|
- MAX7219_writeData(MAX7219_DIGIT4, dt.Minute%10);
|
|
|
if (oldHour != dt.Hour)
|
|
|
{
|
|
|
oldHour = dt.Hour;
|
|
|
- MAX7219_writeData(MAX7219_DIGIT0, dt.Hour/10);
|
|
|
- MAX7219_writeData(MAX7219_DIGIT1, dt.Hour%10);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (si != 5 || si != 11)
|
|
|
+ {
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT0, dt.Hour/10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT1, dt.Hour%10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT2, SYM_Minus);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT3, dt.Minute/10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT4, dt.Minute%10);
|
|
|
+ }
|
|
|
+ else if (si == 5 || si == 11)
|
|
|
+ {
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT0, dt.Day/10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT1, dt.Day%10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT2, SYM_Minus);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT3, dt.Month/10);
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT4, dt.Month%10);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
else // time the same, output blank for "hh mm"
|
|
|
{
|
|
|
- MAX7219_writeData(MAX7219_DIGIT2, SYM_Minus);
|
|
|
+ if (si != 5 || si != 11)
|
|
|
+ {
|
|
|
+ MAX7219_writeData(MAX7219_DIGIT2, SYM_BLANK);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * ×èòàåì è äàííûå ñ DHT22, â ñëó÷àå íåóäà÷è -- äàííûå îñòàíóòüñÿ ñòàðûìè.
|
|
|
- * ìåíÿ ýòî ïîëíîñòüþ óñòðàèâàåò.
|
|
|
+ * Читаем данные � DHT22, в �лучае неудачи -- данные о�тануть�� �тарыми.
|
|
|
+ * мен� �то полно�тью у�траивает.
|
|
|
*/
|
|
|
void process()
|
|
|
{
|
|
@@ -172,8 +216,8 @@ void process()
|
|
|
else
|
|
|
{
|
|
|
/*
|
|
|
- *  ñëó÷àå, åñëè îò äàò÷èêà íè÷åãî íå ïîëó÷èëè, çàïóñòèì ïîâòîðíûé îïðîñ ÷åðåç
|
|
|
- * 10 ñåêóíä, íî íå áîëåå 5 ðàç ïîäðÿä.
|
|
|
+ * В �лучае, е�ли от датчика ничего не получили, запу�тим повторный опро� через
|
|
|
+ * 10 �екунд, но не более 5 раз подр�д.
|
|
|
*/
|
|
|
if (status < 6)
|
|
|
{
|
|
@@ -193,7 +237,7 @@ void connectOk()
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * â ñëó÷àå íåóäà÷è ïîäêëþ÷åíèÿ ïîäíèìàåì òî÷êó äîñòóïà áåç àâòîðèçàöèè
|
|
|
+ * в �лучае неудачи подключени� поднимаем точку до�тупа без авторизации
|
|
|
*/
|
|
|
void connectFail()
|
|
|
{
|