เช เชธเชพเชเช เชชเชฐ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ
เชธเซเชเชพเชฐเซเชเชฐ เชเชพเชฒเซ เชเชฐเชตเชพ เชตเชฟเชถเซเชจเซ เชฎเชพเชนเชฟเชคเซ เชชเซเชจเชเชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซเชจเซ เชธเซเชฅเซ เช
เชจเซเชเซเชณ เชตเชฟเชเชฒเซเชช PC817 optocoupler เชธเชพเชฅเซเชจเซ เชตเชฟเชเชฒเซเชช เชฌเชจเซเชฏเซ. เชฏเซเชเชจเชพเชเซเชฏ เชฐเซเชเชพเชเซเชคเชฟเชฌเซเชฐเซเชกเชฎเชพเช เชคเซเชฐเชฃ เชธเชฐเชเชพ เชธเชฐเซเชเชฟเชเซเชธ เชนเซเชฏ เชเซ, เชฌเชงเซเช เชเชฌเซเชเชธ เชชเซเชฒเชพเชธเซเชเชฟเช เชฌเซเชเซเชธเชฎเชพเช เชฎเซเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเชฆ 100x100 เชฎเซเชฎเซ. เชเชชเซเชเซเชเชชเซเชฒเชฐเซเชธเชจเซ เชซเซเชเซ เชเซเชฏเชพเชฐเซ เชธเซเชฎเซเชเชจเซเชกเชเซเชเชฐ เชตเชพเชฒเซเชต เชธเชพเชฅเซ เชถเชฐเซ เชฅเชคเชพ เชเชชเชเชฐเชฃเซ เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒ เชนเซเชฏ, เชคเซเชฏเชพเชฐเซ เชคเซเชฎเชจเซ เชฒเชฟเชเซเช เชตเชฐเซเชคเชฎเชพเชจ PC817 เชเซเชฒเชตเชพ เชฎเชพเชเซ เชชเซเชฐเชคเซ เชเซ เช
เชจเซ เชเชพเชเชจเซเชเชฐ เชเซเชเซ เชฐเซเชคเซ เชเซเชฐเชฟเชเชฐ เชฅเชถเซ. เชเชตเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ เชฌเชพเชเชพเชค เชฐเชพเชเชตเชพ เชฎเชพเชเซ
เชชเซเชฐเชพเชชเซเชค เชญเชพเช เชชเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชฌเชพเชเซ 1เชฌเชพเชเซ 2ARDUINO MEGA 2560 เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒ เชกเซเชตเชฒเชชเชฎเซเชจเซเช เชฌเซเชฐเซเชก. เช เชฎเชพเชเซ, เช
เชเชคเซ เชกเชฌเชฒ-เชฐเซ เชเชจเซเชเซเชเชฐเชจเซ เชเชชเชฏเซเช เชฅเชพเชฏ เชเซ. 240x400 เชจเซเช เชฐเชฟเชเซเชฒเซเชฏเซเชถเชจ เชงเชฐเชพเชตเชคเซ เชธเซเชเซเชฐเซเชจ, เชเซเชฎเชพเช เชชเซเชฐเชคเชฟเชเชพเชฐเช เชเชเชธเซเชเซเชฐเซเชจ เช
เชจเซ เชคเชพเชชเชฎเชพเชจ เชธเซเชจเซเชธเชฐ เชนเซเชฏ เชเซ, เชคเซเชจเซ เชเชชเชฏเซเช เชฎเชพเชนเชฟเชคเซ เชชเซเชฐเชฆเชฐเซเชถเชจ เชเชชเชเชฐเชฃ เชคเชฐเซเชเซ เชฅเชพเชฏ เชเซ. HX8352B. เชตเชงเซเชฎเชพเช, เชธเซเชเซเชฐเซเชจ เชฌเซเชฐเซเชก เชชเชฐ ICSP เชธเชพเชฅเซ เชเชจเซเชเซเชเชฐ เชฆเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช
เชจเซ เชฎเชพเชเชเซเชฐเซ SD เชธเซเชฒเซเชเชจเซ เชเชชเชฏเซเช เชฅเชคเซ เชจเชฅเซ. เชนเชเซเชเชค เช เชเซ เชเซ SPI เชฌเชธ เชชเชฐเชจเชพ เชธเชเชเชฐเซเชทเชจเซ เชเชพเชฐเชฃเซ "เชฎเซเชณ" SD เชธเซเชเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเชพเชคเซ เชจเชฅเซ. เชซเซเชฒเซเชถ เชเชพเชฐเซเชก เชฎเชพเชเซ, เชเช เช
เชฒเช เชเชพเชฐเซเชก เชฐเซเชกเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชนเชคเซ, เชเซเชฎเชพเช 3,3V เชธเซเชเซเชฌเชฟเชฒเชพเชเชเชฐ เช
เชจเซ เชคเซเชฐเชฃ เชเชเชเชชเซเช เชธเซเชเซเชเซเชธ 74LVS125A เชธเชพเชฅเซ เชฌเชซเชฐ เชเชฟเชชเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชคเซ เชนเชคเซ. เช เชคเซ เชเซ เชเซเชฏเชพเช เชฐเซเช เชฎเชพเชฐเซ เชฐเชพเชน เชเซเชคเซ เชนเชคเซ. เชฅเซเชฐเซ-เชธเซเชเซเช เชฌเชซเชฐ, เชชเชฐเชเชคเซ เชเชพเช เชคเซ E01-ML01DP5 เช
เชฅเชตเชพ เชเชพเชฐเซเชก เชฐเซเชกเชฐ เชเชพเชฎ เชเชฐเซ เชเซ. เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช, SdFat เช เช
เชจเซเชฏ เชเชชเชเชฐเชฃเซ เชธเชพเชฅเซ เช
เชธเชเชเชคเชคเชพ เชตเชฟเชถเซ เชเซเชคเชตเชฃเซ เชเซเช. TXS0108E เชชเชฐ เชฒเซเชตเชฒ เชเชจเซเชตเชฐเซเชเชฐ เชฆเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช เช
เชจเซ เชคเซเชจเซ เชเชฎเซเชชเชฐเซเชธ เชธเชพเชฅเซ เชฌเชฆเชฒเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช, เชเชพเชฐเชฃ เชเซ E01-ML01DP5 5V เชธเชฟเชเซเชจเชฒเซ เชฎเชพเชเซ เชธเชนเชจเชถเซเชฒ เชเซ - เชคเซ เชฎเชฆเชฆ เชเชฐเชคเซเช เชจเชฅเซ. เชเชธเชฟเชฒเซเชธเซเชเซเชชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ, เชเซเชฏเชพเชฐเซ เชเชพเชฐเซเชก เชฐเซเชกเชฐ เชเชจเซเชเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช เชคเซเชฏเชพเชฐเซ MISO เชฒเชพเชเชจ เชชเชฐ เชธเชฟเชเซเชจเชฒเชจเซ เชเซเช เชเซเชตเชพ เชฎเชณเซ เชนเชคเซ. เชเชพเชณเชเซเชชเซเชฐเซเชตเช เชคเชชเชพเชธ เชเชฐเชตเชพ เชชเชฐ, เชเชตเซเช เชเชพเชฃเชตเชพ เชฎเชณเซเชฏเซเช เชเซ 4LVS74A เชจเซ OE 125 เชเซเชจเชฒเซเชจเชพ เชธเชเซเชทเชฎ เชธเชฟเชเซเชจเชฒเซเชจเชพ เชเชจเชชเซเชเซเชธเชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชตเชพเชฏเชฐเชฎเชพเช เชธเซเชฒเซเชกเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชนเชคเชพ เช
เชจเซ เชคเซเชฏเชพเช เชเซเช เชคเซเชฐเซเชเซ เชธเซเชฅเชฟเชคเชฟ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ เชถเชเชพเชคเซ เชจเชฅเซ. เชธเชฟเชเซเชจเชฒ เชฐเซเชเชพเช เชธเชพเชฅเซ เชถเซเชฐเซเชฃเซเชฎเชพเช เชเซเชกเชพเชฏเซเชฒเชพ 5 Kฮฉ เชฐเซเชเชฟเชธเซเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ 3.3V เชฅเซ 3,3V เชธเซเชงเซเชจเชพ เชเชฆเชฟเชฎ เชธเซเชคเชฐเชจเชพ เชเชจเซเชตเชฐเซเชเชฐ เชคเชฐเซเชเซ เชฌเชซเชฐ เชเชฟเชชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชนเชคเซ. MISO เชฐเซเชเชพ เชธเชฟเชตเชพเชฏ. เชคเซเชจเชพ เชเชเชเชชเซเช เชฌเซเชเชฎ เชธเซเชตเชฟเช เชเชฆเชพเช เชเซเชฐเชพเชเชจเซเชก เชฒเซเชตเชฒ เชชเชฐ เชธเชฟเชเซเชจเชฒเซ เชเชเชฐเซเชทเซ เชเซ. MISO เชฒเชพเชเชจเชจเซเช เชธเชเซเชทเชฎ เชธเชฟเชเซเชจเชฒ เชชเชฟเชจ 13 เชนเชคเซเช เชคเซ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชเชฐเซเชฏเชพ เชชเชเซ, เชคเซ เชเซเชฐเซเช เชชเชฐเชฅเซ เชซเชพเชเซ เชเชฏเซเช เชนเชคเซเช เช
เชจเซเชธเซเชฒเซเชกเชฐ9LVS74A CS เชเชชเชเชฐเชฃ เชตเชเซเชเซ เชเชจเชชเซเช เชชเชฟเชจ (125) เช
เชจเซ เชเชฐเซเชฎเชฟเชจเซเชถเชจ เชฐเซเชเชฟเชธเซเชเชฐ เชชเชธเชเชฆ เชเชฐเซ. เชนเชตเซ, เชเซ เชฎเซเชฎเชฐเซ เชเชพเชฐเซเชกเชจเซ เชเซเช เชเชเซเชธเซเชธ เชจเชฅเซ, เชคเซ MISO เชฌเชซเชฐ เช
เชเซเชทเชฎ เชเซ เช
เชจเซ เช
เชจเซเชฏ เชเชชเชเชฐเชฃเชจเชพ เชธเชเชเชพเชฒเชจเชฎเชพเช เชฆเชเชฒ เชเชฐเชคเซเช เชจเชฅเซ.เชตเชฟเชเชพเชธ เชฌเซเชฐเซเชก เชกเชพเชฏเชพเชเซเชฐเชพเชฎเชฐเซเชธเซเชตเชฐ เชเชพเชฐเซเชฏเชฐเชค เชเซDS3231 เชเชกเชฟเชฏเชพเชณเชจเซ เชเซเชกเชตเชพ เชฎเชพเชเซ เชธเซเชซเซเชเชตเซเชฐ I2C เชฌเชธ (TWI) เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ.
Arduino IDE เชชเซเชฐเซเชเซเชฐเชพเชฎ// เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ: Adafruit_TFTLCD เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชเซเชเซเชเชธ เชนเซเชตเซ เชเซเชเช
// เชเซเชฏเชพเช เชคเซ TFT เชถเชฟเชฒเซเชก เช
เชฅเชตเชพ เชฌเซเชฐเซเชเชเชเช เชฌเซเชฐเซเชก เชฎเชพเชเซ เชเซเช เชตเซเชฒ เชเซ.
// เชธเซเชเช
เชช เชฎเชพเชเซ Adafruit_TFTLCD.h เชฎเชพเช เชธเชเชฌเชเชงเชฟเชค เชเชฟเชชเซเชชเชฃเซเช เชเซเช.
เชเชชเชจ-เชธเซเชฎเชพเชฐเซเช เชเซเชฎ เช
เชจเซ เชเซเชเซเชฒเซเชเซเชธ เชเซเชฎ เชฆเซเชตเชพเชฐเชพ //
//[เชเชฎเซเชเชฒ เชธเซเชฐเชเซเชทเชฟเชค]
//เชฆเซเชเชพเชจ:
//
//เชกเซเชฎเซ เชเชพเชฐเซเชฏ: เชเซเชฐเชพเชซเชฟเชเซเชธ, เช
เชเซเชทเชฐเซ เชฆเชฐเซเชถเชพเชตเซ
//Arduino IDE: 1.6.5
// เชฌเซเชฐเซเชก: Arduino UNO R3, Arduino Mega2560, Arduino Leonardo
// เชฌเซเชฐเซเชก:เชเชชเชจ-เชธเซเชฎเชพเชฐเซเช UNO R3 5V / 3.3V, Arduino UNO R3, Arduino Mega2560
//3.2เชเชเช TFT:
//
//OPEN-SMART UNO R3 5V / 3.3V:
//
# เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ // เชเซเชฐ เชเซเชฐเชพเชซเชฟเชเซเชธ เชฒเชพเชเชฌเซเชฐเซเชฐเซ
//#เชธเชฎเชพเชตเซเชถ เชเชฐเซ // เชนเชพเชฐเซเชกเชตเซเชฐ-เชตเชฟเชถเชฟเชทเซเช เชชเซเชธเซเชคเชเชพเชฒเชฏ
# เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ
MCUFRIEND_kbv tft;
#include "SdFat.h" // SdFat เชฒเชพเชเชฌเซเชฐเซเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ
SdFat SD;
เชเชธเชกเซเชซเชพเชเชฒ เชซเชพเชเชฒ;
เชซเชพเชเชฒ เชฎเชพเชฏเชซเชพเชเชฒ;
#SD_CS_PIN SS เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
# เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ // SPI เชฌเชธ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชฒเชพเชเชฌเซเชฐเซเชฐเซเชจเซ เชเชจเซเชเซเช เชเชฐเซ
# เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ // RF24 เชฒเชพเชเชฌเซเชฐเซเชฐเซเชฎเชพเชเชฅเซ เชธเซเชเชฟเชเชเซเชธ เชซเชพเชเชฒเชจเซ เชเชจเซเชเซเช เชเชฐเซ
# เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ // nRF24L24+ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชฒเชพเชเชฌเซเชฐเซเชฐเซเชจเซ เชเชจเซเชเซเช เชเชฐเซ
RF24 เชฐเซเชกเชฟเชฏเซ(47, 49);
# เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ
DS3231 rtc(27, 25);
เชธเชฎเชฏ เชเซ;
uint16_t r = 6000;
uint32_t k = 0;
เช
เชธเซเชฅเชฟเชฐ เชธเชนเซ เชตเชฟเชจเชพเชจเซ เชฒเชพเชเชฌเซ เชกเซเชเชพ;
เชซเซเชฒเซเช leb_1;
เชซเซเชฒเซเช leb_2;
เชซเซเชฒเซเช leb_3;
เชซเซเชฒเซเช leb_4;
uint8_t เชชเชพเชเชช;
int rc = 0;
uint8_t time_sec_prev;
uint8_t time_day_prev;
//****************************************************** ****************//
// เชเซ เชคเชฎเซ OPEN-SMART TFT เชฌเซเชฐเซเชเชเชเช เชฌเซเชฐเซเชกเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ //
// เชคเชฎเชจเซ 5V-3.3V เชฒเซเชตเชฒ เชเชจเซเชตเชฐเซเชเชฟเชเช เชธเชฐเซเชเชฟเช เชเชฎเซเชฐเชตเชพ เชฎเชพเชเซ เชญเชฒเชพเชฎเชฃ เชเชฐเซเช เชเซเช.
// เช
เชฒเชฌเชคเซเชค เชคเชฎเซ 5V/3.3V เชชเชพเชตเชฐ เชธเซเชตเซเช เชธเชพเชฅเซ OPEN-SMART UNO เชฌเซเชฒเซเช เชตเชฐเซเชเชจเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ,
// เชคเชฎเชพเชฐเซ เชซเชเซเชค 3.3V เชชเชฐ เชธเซเชตเชฟเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
// เชเชฒเชธเซเชกเซ เชฎเชพเชเซ เชเชเชเซเชฐเซเชฒ เชชเชฟเชจ เชเซเชเชชเชฃ เชกเชฟเชเชฟเชเชฒ เช
เชฅเชตเชพ เช
เชธเชพเชเชจ เชเชฐเซ เชถเชเชพเชฏ เชเซ
// เชเชจเชพเชฒเซเช เชชเชฟเชจ...เชชเชฐเชเชคเซ เช
เชฎเซ เชเชจเชพเชฒเซเช เชชเชฟเชจเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช เชเชพเชฐเชฃ เชเซ เช เช
เชฎเชจเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ
//โโโโโโโโโโโโโโโ-|
// TFT เชฌเซเชฐเซเชเชเชเช - Arduino UNO / Mega2560 / OPEN-SMART UNO เชฌเซเชฒเซเช
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - เชฐเซเชธเซเช
// LED - GND
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7
// เชเซเชเชฒเชพเช เชธเชพเชฎเชพเชจเซเชฏ 16-เชฌเซเช เชฐเชเช เชฎเซเชฒเซเชฏเซเชจเซ เชฎเชพเชจเชต-เชตเชพเชเชเซ เชถเชเชพเชฏ เชคเซเชตเชพ เชจเชพเชฎเซ เชธเซเชเชชเซ:
#BLACK 0x0000 เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
#BLUE 0x001F เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
# RED 0xF800 เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
# GREEN 0x07E0 เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
# CYAN 0x07FF เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
#เชฎเซเชเซเชจเซเชเชพ 0xF81F เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
#YELLOW 0xFFE0 เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
# เชธเชซเซเชฆ 0xFFFF เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
#เชเซเชฐเซ 0x8C51 เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
# GRAYD 0x39E7 เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// เชเซ เชเชตเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชฐเชนเซเชฏเชพ เชนเซ, เชคเซ เชคเชฎเชพเชฎ เชจเชฟเชฏเชเชคเซเชฐเชฃ เช
เชจเซ เชกเซเชเชพ เชฐเซเชเชพเช เชจเชฟเชถเซเชเชฟเชค เชเซ, เช
เชจเซ
// เชธเชฐเชณ เชเซเชทเชฃเชพเชจเซ เชตเซเชเชฒเซเชชเชฟเช เชฐเซเชคเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเชพเชฏ เชเซ:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;
เชธเซเชเซเชฐเชฟเชเช เชกเซเชเชพเชธเซเชเซเชฐเชฟเชเช;
//เชธเซเชเซเชฐเชฟเชเช numfileMonth = "1.txt";
char perv [] = {"2.txt"};
//เชธเซเชเซเชฐเชฟเชเช *numfileMonth="1.txt" (sizeof (numfileMonth));
///////////////////////////////////////// ///////////////
เชฐเชฆเชฌเชพเชคเชฒ เชธเซเชเช เชช(เชฐเชฆเชฌเชพเชคเชฒ) {
rtc.begin();
// เชธเชฎเชฏ เชธเซเชฏเซเชเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ, เชเชฐเซเชฐเซ เชฒเซเชเซเช เช
เชจเชเซเชฎเซเชจเซเช เชเชฐเซ
// rtc.setDOW(6); // เช
เช เชตเชพเชกเชฟเชฏเชพเชจเชพ เชฆเชฟเชตเชธ
// rtc.setTime(22, 04, 0); // เชธเชฎเชฏ, 24 เชเชฒเชพเชเชจเชพ เชซเซเชฐเซเชฎเซเชเชฎเชพเช.
// rtc.setDate(4, 5, 2019); // เชคเชพเชฐเซเช, เชเชเซเชเซเชฌเชฐ 29, 2018
เชธเซเชฐเซเชฏเชฒ.เชฌเซเชเชฟเชจ (2000000);
//////// เชธเซเชเซเชฐเซเชจ เชชเซเชฐเชพเชฐเชเชญ
tft.begin(0x65);
tft.reset();
tft.setRotation(0);
tft.cp437(เชธเชพเชเซเช);
/////////////////เชจเชพเชฎเซเชจเซเช เชเชเชเชชเซเช, เชธเชพเชงเชจเชธเชพเชฎเชเซเชฐเซ, เชธเชเชธเซเชฅเชพเชจเซเช เชจเชพเชฎ
tft.fillScreen(BLACK);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.setCursor(8, 0);
tft.println("เชตเชฟเชเชพเชธเชเชฐเซเชคเชพ เช
เชจเซ เชฌเชฟเชฒเซเชก");
tft.setCursor(30, 20);
tft.print (utf8rus("เชเชจเซเชธเซเชเซเชฐเชเซเชเชฐ V.V." ));
tft.setCursor(40, 40);
tft.print (utf8rus("เชเชฐเซเชจเชฐ I.I" ));
เชตเชฟเชฒเชเชฌ(2000);
radio.begin(); // nRF24L01+ เชเชพเชฐเซเชฏ เชถเชฐเซ เชเชฐเซ
radio.setChannel(120); // เชกเซเชเชพ เชฐเชฟเชธเซเชชเซเชถเชจ เชเซเชจเชฒเชจเซ เชเชฒเซเชฒเซเช เชเชฐเซ (0 เชฅเซ 127 เชธเซเชงเซ)
radio.setDataRate(RF24_250KBPS); // เชกเซเชเชพ เชเซเชฐเชพเชจเซเชธเชซเชฐ เชฐเซเช (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Mbit/s เชจเซ เชเชฒเซเชฒเซเช เชเชฐเซ
radio.setPALevel(RF24_PA_MAX); // เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เชชเชพเชตเชฐเชจเซ เชเชฒเซเชฒเซเช เชเชฐเซ (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openReadingPipe(1, 0xAABBCCDD11LL); // เชกเซเชเชพ เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ, 1 เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ 1xAABBCCDD0 เชจเชพ เชเชณเชเชเชฐเซเชคเชพ เชธเชพเชฅเซ 11 เชชเชพเชเชช เชเซเชฒเซ
// เชกเซเชเชพ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ ID 2xAABBCCDD2 เชธเชพเชฅเซ เชชเชพเชเชช 0 เชเซเชฒเซ
radio.startListening(); // เชฐเซเชธเซเชตเชฐ เชเชพเชฒเซ เชเชฐเซ, เชเซเชฒเซเชฒเชพ เชชเชพเชเชชเซ เชธเชพเชเชญเชณเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ
// radio.stopListening();
////////เชธเซเชตเชพ เชฎเชพเชนเชฟเชคเซเชจเซเช เชเชเชเชชเซเช
tft.fillScreen(BLACK);
tft.setCursor(8, 0);
tft.setTextSize(1);
////////SD เชเชพเชฐเซเชก เชถเชฐเซ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ
Serial.println("เชชเซเชฐเชพเชฐเชเชญเชฟเช SD เชเชพเชฐเซเชก");
tft.println("เชชเซเชฐเชพเชฐเชเชญเชฟเช SD เชเชพเชฐเซเชก");
tft.setCursor(8, 10);
////////เชเชพเชฐเซเชกเชจเซ เชถเชฐเซเชเชค เชเชฐเชตเซ
เชเซ (!SD.begin(SD_CS_PIN)) {
Serial.println("เชชเซเชฐเชพเชฐเชเชญเชฟเช เชจเชฟเชทเซเชซเชณ!");
tft.fillRect(8, 10, 85, 7, RED);
tft.setTextColor(BLACK);
tft.println("เชชเซเชฐเชพเชฐเชเชญเชฟเช เชจเชฟเชทเซเชซเชณ!");
เชชเชฐเชค;
}
tft.setTextColor(WHITE);
Serial.println("เชชเซเชฐเชพเชฐเชเชญเชฟเชเชฐเชฃ เชฅเชฏเซเช");
tft.println("เชชเซเชฐเชพเชฐเชเชญเชฟเชเชฐเชฃ เชฅเชฏเซเช");
เชตเชฟเชฒเชเชฌ(2000);
////////เชตเชพเชเชเชตเชพเชจเซ เชธเชฎเชฏ เช
เชจเซ เชคเชพเชฐเซเช เช
เชจเซ เชคเซเชฎเชจเซ เชเชฒเซเชจเซ เชธเซเชเชชเชตเซ
t = rtc.getTime();
time_sec_prev = t.sec;
time_day_prev = t.date;
//////// เชฌเชณเชเชฌเชฐเซเชฅเซ เชคเชพเชฐเซเช เชเชเชเชชเซเช เชเชฐเซ เชเซเชฅเซ เชกเชฟเชธเซเชชเซเชฒเซ เชฎเชพเชเซ เชคเชพเชฐเซเช เชฌเชฆเชฒเชตเชพเชจเซ เชฐเชพเชน เชเซเชตเซ เชจ เชชเชกเซ
tft.setCursor(180, 0); // เชเชฐเซเชธเชฐ เชชเซเชเชฟเชถเชจ เชธเซเช เชเชฐเซ
tft.fillRect(178, 0, 65, 7, เชเซเชฐเซ); // เชธเชฎเชฏ เชเชเชเชชเซเช เชตเชฟเชธเซเชคเชพเชฐ เชธเชพเชซ
tft.setTextSize(1);
tft.print(rtc.getDateStr());
//////// เชจเชฟเชฏเชเชคเซเชฐเชฃ เชตเชธเซเชคเซเชเชจเซเช เชจเชพเชฎ เชเชเชเชชเซเช เชเชฐเซ
tft.setTextSize(2);
tft.setCursor(60, 25);
tft.println (utf8rus("Winches I"));
//////// เชฒเซเช เชซเชพเชเชฒ เชฌเชจเชพเชตเชตเซ เช
เชจเซ เชฌเชจเชพเชตเชเชจเชพ เชชเซเชฐเชฏเชพเชธเชจเซเช เชชเชฐเชฟเชฃเชพเชฎ เชเชเชเชชเซเช เชเชฐเชตเซเช
tft.setTextSize(1);
tft.setCursor(130, 10); // เชเซ เชฒเซเช เชซเชพเชเชฒ 2.txt เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซ เชซเชพเชเชฒ เชชเชฐ เชฒเชเชตเชพเชจเซเช เชเชพเชฒเซ เชฐเชนเซเชถเซ
เชเซ (SD.exists(perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} เชฌเซเชเซเช {
myFile = SD.open(perv, FILE_WRITE); // เชเซ เชซเชพเชเชฒ 2.txt เช
เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชจเชฅเซ, เชคเซ เชคเซ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ
myFile.close();
tft.println(perv);
Serial.println(perv);
}
}
เชฐเชฆเชฌเชพเชคเชฒ เชฒเซเชช(เชฐเชฆเชฌเชพเชคเชฒ) {
//////// COM เชชเซเชฐเซเช เชฎเซเชจเชฟเชเชฐ เชชเชฐ เชฒเซเช เชเชเชเชชเซเช เชเชฐเชตเชพเชจเซ เชตเชฟเชจเชเชคเซเชจเซเช เช
เชธเซเชคเชฟเชคเซเชต เชคเชชเชพเชธเซ เชฐเชนเซเชฏเซเช เชเซ
เชเซ (Serial.available() > 0) {
เชเซ (1 == Serial.read());
////////เช
เชจเซ เชเซ โ1โ เชธเซเชตเซเชเชพเชฐเชตเชพเชฎเชพเช เชเชตเซ, เชคเซ เชเชเชเชชเซเช
เชซเชพเชเชฒ myFile = SD.open(perv);
// เชเซ เชซเชพเชเชฒ เชเชชเชฒเชฌเซเชง เชนเซเชฏ, เชคเซ เชคเซเชจเซ เชฒเชเซ:
เชเซ (เชฎเชพเชฐเซ เชซเชพเชเชฒ) {
เชเซเชฏเชพเชฐเซ (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
เชฌเซเชเซเช {
Serial.println("เชญเซเชฒ เชเชชเชจเชฟเชเช .txt");
}
}
////////เชตเชพเชเชเชจ เชธเชฎเชฏ
t = rtc.getTime();
tft.setTextColor(WHITE);
//////// เชเซ เชธเชฎเชฏ เชฌเชฆเชฒเชพเชฏเซ เชนเซเชฏ, เชคเซ เชจเชตเซ เชเชกเชฟเชฏเชพเชณ เชฐเซเชกเชฟเชเชเซเชธ เชฆเชฐเซเชถเชพเชตเซ
เชเซ ( time_sec_prev != t.sec) {
tft.setCursor(120, 0); // เชเชฐเซเชธเชฐ เชชเซเชเชฟเชถเชจ เชธเซเช เชเชฐเซ
tft.fillRect(118, 0, 50, 7, เชเซเชฐเซ); // เชธเชฎเชฏ เชเชเชเชชเซเช เชตเชฟเชธเซเชคเชพเชฐ เชธเชพเชซ
tft.setTextSize(1);
tft.print(rtc.getTimeStr()); // เชเชเชเชชเซเช เชเชกเชฟเชฏเชพเชณ เชฐเซเชกเชฟเชเชเซเชธ
time_sec_prev = t.sec;
}
////////เชเซ เชคเชพเชฐเซเช เชฌเชฆเชฒเชพเช เชเช เชนเซเชฏ, เชคเซ เชจเชตเซ เชคเชพเชฐเซเช เชฆเชฐเซเชถเชพเชตเซ
เชเซ ( time_day_prev != t.date) {
tft.setCursor(180, 0); // เชเชฐเซเชธเชฐ เชชเซเชเชฟเชถเชจ เชธเซเช เชเชฐเซ
tft.fillRect(178, 0, 65, 7, เชเซเชฐเซ); // เชธเซเชชเชทเซเช เชคเชพเชฐเซเช เชชเซเชฐเชฆเชฐเซเชถเชจ เชตเชฟเชธเซเชคเชพเชฐ
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // เชคเชพเชฐเซเช เชฐเซเชกเชฟเชเชเซเชธ เชฆเชฐเซเชถเชพเชตเซ
time_day_prev = t.date;
}
////////เชเซ เชฐเซเชกเชฟเชฏเซ เชฐเชฟเชธเซเชชเซเชถเชจ เชเชชเชฒเชฌเซเชง เชนเซเชฏ, เชคเซ
เชเซ (เชฐเซเชกเชฟเชฏเซ.เชเชชเชฒเชฌเซเชง(&เชชเชพเชเชช)) {
//////// เชฐเซเชธเซเชต เชฌเชซเชฐ เชญเชฐเซเชฒเซเช เชเซ เชเซ เชเซเชฎ เชคเซ เชคเชชเชพเชธเซ เชฐเชนเซเชฏเซเช เชเซ,
radio.read(&data, sizeof(data));
//////// เชเซ เชเชฐเซเชฐเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เชธเชฐเชจเชพเชฎเซเช เชเชชเชฒเชฌเซเชง เชนเซเชฏ, เชคเซ
เชเซ (เชชเชพเชเชช == 1) {
//////// เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชถเซเชจเซเชฏเชจเชพ เชธเชฟเชเชเซเชฐเชจเชพเชเช เชเซเชฐเชฎเชจเซ เชฐเชพเชน เชเซเชตเซ
//เชกเซเชเชพ เชฌเซเชฒเซเชเชจเซ เชถเชฐเซเชเชค
เชเซ (เชกเซเชเชพ == 0000) {
rc = 0;
} เชฌเซเชเซเช {
rc++;
}
//////// เชเชพเชเชจเซเชเชฐ เชฎเซเชฒเซเชฏเซ เชฐเซเชเซเชฐเซเชก เชเชฐเชตเชพ เช
เชจเซ เชเช เชเชฒเชพเชเชจเชพ 10เชฎเชพ เช
เชจเซ 100เชฎเชพ เชญเชพเชเชฎเชพเช เชคเซเชฎเชจเซ เชเชฃเชคเชฐเซ เชเชฐเชตเซ
เชเซ (rc == 1) {
leb_1 = เชกเซเชเชพ / 3600.0;
}
เชเซ (rc == 2) {
leb_2 = เชกเซเชเชพ / 3600.0;
}
เชเซ (rc == 3) {
leb_3 = เชกเซเชเชพ / 3600.0;
}
เชเซ (rc == 4) {
leb_4 = เชกเซเชเชพ / 3600.0;
}
}
}
r++;
k++; // เชฎเชพเชคเซเชฐ เชเช เชเชพเชเชจเซเชเชฐ
//////// เชเซเชเซเชเชธ เชธเชฎเชฏเชพเชเชคเชฐเซ เชกเซเชเชพ เช
เชชเชกเซเช
เชเซ ( r >= 6500) {
tft.setTextSize(2);
tft.fillRect(0, 41, 180, 64, GRAYD);
Serial.println("เชฒเซเชฌเซเชกเชเซ I");
tft.setCursor(0, 41);
tft.println(leb_1);
Serial.println(leb_1);
tft.println(leb_2);
Serial.println(leb_2);
tft.println(leb_3);
Serial.println(leb_3);
tft.println(leb_4);
Serial.println(leb_4);
Serial.println(k);
r = 0;
}
//////// เชฒเซเช เชเชจ SD เชชเชฐ เชฆเชฐ 10 เชฎเชฟเชจเชฟเชเซ เชกเซเชเชพ เชฒเชเซ.
เชเซ ((t.min % 10 == 0) && ( t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(BLACK);
//////// .csv เชซเซเชฐเซเชฎเซเชเชฎเชพเช เชธเซเชเซเชฐเชฟเชเช เชฌเชจเชพเชตเชตเซ
เชธเซเชเซเชฐเชฟเชเช เชกเซเชเชพเชธเซเชเซเชฐเชฟเชเช = เชธเซเชเซเชฐเชฟเชเช (rtc.getDateStr()) + "," +(rtc.getTimeStr()) + "," + (leb_1) + "," + (leb_2)
+ ", " + (leb_3) + ", " + (leb_4) + ", ";
////////เชซเชพเชเชฒเชฎเชพเช เชฒเชเซ เช
เชจเซ เชฒเซเชเชจ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เชเชเชเชชเซเช เชเชฐเซ
myFile = SD.open(perv, FILE_WRITE); // เชเซ โ2.txtโ เชจเชพเชฎเชจเซ เชเซเช เชซเชพเชเชฒ เชจ เชนเซเชฏ, เชคเซ เชคเซ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชเซ (เชฎเชพเชฐเซ เชซเชพเชเชฒ) {
myFile.println(dataString);
myFile.close();
tft.fillRect(198, 8, 42, 10, เชฒเซเชฒเซ);
tft.println("SD OK");
Serial.println("SD OK");
เชตเชฟเชฒเชเชฌ(900); // เชตเชฟเชฒเชเชฌ, เช
เชจเซเชฏเชฅเชพ เชเช เชธเซเชเชจเซเชก เชชเชธเชพเชฐ เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช เชธเซเชงเซ 13 เชธเชฎเชพเชจ เชฐเซเชกเชฟเชเชเซเชธ เชฐเซเชเซเชฐเซเชก เชเชฐเซ เชเซ
} เชฌเซเชเซเช {
tft.fillRect(198, 8, 42, 10, RED);
tft.println("SD ERR");
Serial.println("SD ERR");
}
}
}เช
เชเซเชทเชฐ เชฐเซเชชเชพเชเชคเชฐ เชเชพเชฐเซเชฏเชเซเชฐเชฎ/* เชฐเชถเชฟเชฏเชจ เชซเซเชจเซเชเชจเซ UTF-8 เชฅเซ Windows-1251 เชชเชฐ เชซเชฐเซเชฅเซ เชเซเชก เชเชฐเซ */
เชธเซเชเซเชฐเชฟเชเช utf8rus(เชธเซเชเซเชฐเชฟเชเช เชธเซเชคเซเชฐเซเชค)
{
int i,k;
เชถเชฌเซเชฆเชฎเชพเชณเชพ เชฒเชเซเชทเซเชฏ;
เชธเชนเซ เชตเชฟเชจเชพเชจเซเช เชเชพเชฐ n;
char m[2] = { '0', ' ' };
k = source.length(); i = 0;
เชเซเชฏเชพเชฐเซ (i < k) {
n = เชธเซเชคเซเชฐเซเชค[i]; i++;
เชเซ (n >= 0xC0) {
เชธเซเชตเชฟเช (n) {
เชเซเชธ 0xD0: {
n = เชธเซเชคเซเชฐเซเชค[i]; i++;
เชเซ (n == 0x81) { n = 0xA8; เชตเชฟเชฐเชพเชฎ; }
เชเซ (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
เชคเซเชกเซ;
}
เชเซเชธ 0xD1: {
n = เชธเซเชคเซเชฐเซเชค[i]; i++;
เชเซ (n == 0x91) { n = 0xB8; เชตเชฟเชฐเชพเชฎ; }
เชเซ (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
เชคเซเชกเซ;
}
}
}
m[0] = n; เชฒเชเซเชทเซเชฏ = เชฒเชเซเชทเซเชฏ + เชถเชฌเซเชฆเชฎเชพเชณเชพ(m);
}
เชตเชณเชคเชฐ เชฒเชเซเชทเซเชฏ;
Adafruit_GFX เชฒเชพเชเชฌเซเชฐเซเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเชฟเชฐเชฟเชฒเชฟเช เชเชเชเชชเซเช เชฎเชพเชเซ เชเซเชฐเซเชเซเชเชฐ เชเซเชฐเชพเชจเซเชธเชเซเชกเชฟเชเช เชชเซเชฐเซเชเซเชฐเชพเชฎ เชฎเซเชเซเชฏ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชธเชพเชฅเซ เชธเชฎเชพเชจ เชซเซเชฒเซเชกเชฐเชฎเชพเช เชฎเซเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชคเชฎเชพเชฐเซ Adafruit_GFX เชฎเชพเช glcdfont.c เชซเชพเชเชฒเชจเซ เช
เชฒเช เชซเซเชจเซเช เชธเชพเชฅเซ เชฌเชฆเชฒเชตเชพเชจเซ เชชเชฃ เชเชฐเซเชฐ เชเซ.
เชธเชพเชฐเชพเชเชถ เชฎเชพเชเซ, เชนเซเช เชเชนเซเชถ เชเซ เชธเชฟเชธเซเชเชฎ เช
เชชเซเชเซเชทเชพเช เชชเชฐ เชเซเชตเซ เชฐเชนเซ เชเซ, เชธเชพเชงเชจเชธเชพเชฎเชเซเชฐเซเชจเชพ เชเชชเชฐเซเชเชฟเชเช เชธเชฎเชฏเชจเซ เชฎเซเชจเชฟเชเชฐ เชเชฐเชตเชพเชจเซเช เชตเชงเซ เชธเชฐเชณ เชฌเชจเซเชฏเซเช เชเซ. เชฌเซเชฐเซเชกเชฌเซเชฐเซเชกเซเชธ เชชเชฐ เชฌเชงเซเช เช เชเชธเซเชฎเซเชฌเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเซเชตเชพ เชเชคเชพเช, เชเชพเชฎ เชตเชฟเชถเซ เชเซเช เชคเชพเชคเซเชเชพเชฒเชฟเช เชซเชฐเชฟเชฏเชพเชฆเซ เชจเชฅเซ. เชชเซเชฐเชฅเชฎ เชคเชคเซเชตเซ เช เชฎเชนเชฟเชจเชพเชฅเซ เชตเชงเซ เชธเชฎเชฏเชฅเซ เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ เช
เชจเซ เชถเชฟเชฏเชพเชณเชพเชฎเชพเช เชฌเชเซ เชเชฏเชพ เชเซ.
เชธเซเชฐเซเชธ: www.habr.com