เจเจธ เจธเจพเจเจ 'เจคเฉ เจธเจผเฉเจฐเฉ เจเจฐเฉ
เจธเจเจพเจฐเจเจฐ เจจเฉเฉฐ เจเจพเจฒเฉ เจเจฐเจจ เจฌเจพเจฐเฉ เจเจพเจฃเจเจพเจฐเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจธเจญ เจคเฉเจ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจตเจฟเจเจฒเจช PC817 เจเจชเจเฉเจเฉเจฒเจฐ เจจเจพเจฒ เจตเจฟเจเจฒเจช เจฌเจฃ เจเจฟเจ. เจฏเฉเจเจจเจพเจฌเฉฑเจง เจกเจพเจเจเจเฉเจฐเจพเจฎเจฌเฉเจฐเจกเจพเจ เจตเจฟเฉฑเจ เจคเจฟเฉฐเจจ เจเฉฑเจเฉ เจเจฟเจนเฉ เจธเจฐเจเจ เจนเฉเฉฐเจฆเฉ เจนเจจ, เจนเจฐ เจเฉเจเจผ เจเจฌเฉเจเจธ เจชเจฒเจพเจธเจเจฟเจ เจฆเฉ เจฌเจเจธเฉ เจตเจฟเฉฑเจ เจฐเฉฑเจเฉ เจเจพเจเจฆเฉ เจนเฉ, เจเจเจพเจฐ 100x100 เจฎเจฟเจฒเฉเจฎเฉเจเจฐเฅค optocouplers เจฆเฉ เจซเฉเจเฉ เจเจฆเฉเจ เจธเฉเจฎเฉเจเฉฐเจกเจเจเจฐ เจตเจพเจฒเจต เจจเจพเจฒ เจธเจผเฉเจฐเฉเจเจคเฉ เจกเจฟเจตเจพเจเจธเจพเจ เจจเจพเจฒ เจเฉเฉเจฟเจ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจคเจพเจ เจเจนเจจเจพเจ เจฆเจพ เจฒเฉเจเฉเจ เจเจฐเฉฐเจ PC817 เจจเฉเฉฐ เจเฉเจฒเฉเจนเจฃ เจฒเจ เจเจพเจซเฉ เจนเฉเฉฐเจฆเจพ เจนเฉ เจ
เจคเฉ เจเจพเจเจเจเจฐ เจเจฒเจค เจขเฉฐเจ เจจเจพเจฒ เจเจฐเจฟเฉฑเจเจฐ เจนเฉ เจเจพเจตเฉเจเจพเฅค เจ
เจเจฟเจนเฉ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจฌเจพเจนเจฐ เจเฉฑเจขเจฃ เจฒเจ
เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจตเจพเจฒเจพ เจนเจฟเฉฑเจธเจพ 'เจคเฉ เจฌเจฃเจพเจเจ เจเจฟเจ เจนเฉ เจชเจพเจธเฉ 1เจชเจพเจธเฉ 2ARDUINO MEGA 2560 เจจเจพเจฒ เจเฉเฉเจฟเจ เจตเจฟเจเจพเจธ เจฌเฉเจฐเจกเฅค เจเจธเจฆเฉ เจฒเจ, เจ
เฉฐเจค เจตเจฟเฉฑเจ เจเฉฑเจ เจกเจฌเจฒ-เจฐเฉเจ
เจเจจเฉเจเจเจฐ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค 240x400 เจฆเฉ เจฐเฉเจเจผเฉเจฒเจฟเจเจธเจผเจจ เจตเจพเจฒเฉ เจเฉฑเจ เจธเจเฉเจฐเฉเจจ, เจเจฟเจธ เจตเจฟเฉฑเจ เจเฉฑเจ เจฐเฉเจงเจ เจเฉฑเจเจธเจเฉเจฐเฉเจจ เจ
เจคเฉ เจเฉฑเจ เจคเจพเจชเจฎเจพเจจ เจธเฉเจเจธเจฐ เจนเฉ, เจจเฉเฉฐ เจเฉฑเจ เจเจพเจฃเจเจพเจฐเฉ เจกเจฟเจธเจชเจฒเฉ เจกเจฟเจตเจพเจเจธ เจตเจเฉเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค HX8352B. เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจธเจเฉเจฐเฉเจจ เจฌเฉเจฐเจก 'เจคเฉ ICSP เจจเจพเจฒ เจเจจเฉเจเจเจฐ เจจเฉเฉฐ เจนเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจนเฉ เจ
เจคเฉ เจฎเจพเจเจเฉเจฐเฉ SD เจธเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจนเฉเฅค เจคเฉฑเจฅ เจเจน เจนเฉ เจเจฟ "เจฎเฉเจฒ" SD เจธเจพเจเจ เจจเฉเฉฐ SPI เจฌเฉฑเจธ 'เจคเฉ เจตเจฟเจตเจพเจฆ เจฆเฉ เจเจพเจฐเจจ เจจเจนเฉเจ เจตเจฐเจคเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจซเจฒเฉเจธเจผ เจเจพเจฐเจก เจฒเจ, เจเฉฑเจ เจตเฉฑเจเจฐเจพ เจเจพเจฐเจก เจฐเฉเจกเจฐ เจตเจฐเจคเจฟเจ เจเจฟเจ เจธเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ เจเฉฑเจ 3,3V เจธเจเฉเจฌเฉเจฒเจพเจเจเจผเจฐ เจ
เจคเฉ เจคเจฟเฉฐเจจ เจเจเจเจชเฉเฉฑเจ เจธเจเฉเจเจธ 74LVS125A เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจฌเจซเจฐ เจเจฟเฉฑเจช เจธเจผเจพเจฎเจฒ เจธเฉเฅค เจเจน เจเจน เจฅเจพเจ เจนเฉ เจเจฟเฉฑเจฅเฉ เจฐเฉเจ เจฎเฉเจฐเฉ เจเจกเฉเจ เจเจฐ เจฐเจฟเจนเจพ เจธเฉ. เจเฉฑเจ เจคเจฟเฉฐเจจ-เจฐเจพเจ เจฌเจซเจฐ, เจชเจฐ เจเจพเจ เจคเจพเจ E01-ML01DP5 เจเจพเจ เจเจพเจฐเจก เจฐเฉเจกเจฐ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจเจฟเฉฑเจชเจฃเฉเจเจ เจตเจฟเฉฑเจ, SdFat เจจเฉ เจนเฉเจฐ เจกเจฟเจตเจพเจเจธเจพเจ เจฆเฉ เจจเจพเจฒ เจ
เจธเฉฐเจเจคเจคเจพ เจฌเจพเจฐเฉ เจเฉฑเจ เจเฉเจคเจพเจตเจจเฉ เจฆเฉเจเฉ. TXS0108E 'เจคเฉ เจฒเฉเจตเจฒ เจเจจเจตเจฐเจเจฐ เจจเฉเฉฐ เจนเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจธเฉ เจ
เจคเฉ เจเฉฐเจชเจฐเจพเจ เจจเจพเจฒ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจธเฉ, เจเจฟเจเจเจเจฟ E01-ML01DP5 5V เจธเจฟเจเจจเจฒเจพเจ เจจเฉเฉฐ เจธเจนเจฟเจฃเจธเจผเฉเจฒ เจนเฉ - เจเจธ เจจเฉ เจฎเจฆเจฆ เจจเจนเฉเจ เจเฉเจคเฉเฅค เจเฉฑเจ เจเจธเจฟเจฒเฉเจธเจเฉเจช เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ, MISO เจฒเจพเจเจจ 'เจคเฉ เจเฉฑเจ เจธเจฟเจเจจเจฒ เจจเฉเจเจธเจพเจจ เจฆเจพ เจชเจคเจพ เจฒเจเจพเจเจ เจเจฟเจ เจธเฉ เจเจฆเฉเจ เจเฉฑเจ เจเจพเจฐเจก เจฐเฉเจกเจฐ เจเจจเฉเจเจ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค เจงเจฟเจเจจ เจจเจพเจฒ เจเจพเจเจ เจเจฐเจจ 'เจคเฉ, เจเจน เจชเจพเจเจ เจเจฟเจ เจเจฟ 4LVS74A เจฆเฉ OE 125 เจเฉเจจเจฒเจพเจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅ เจธเจฟเจเจจเจฒเจพเจ เจฆเฉ เจเจจเจชเฉเจเจธ เจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจเจฎ เจคเจพเจฐ เจจเจพเจฒ เจธเฉเจฒเจก เจเฉเจคเจพ เจเจฟเจ เจธเฉ เจ
เจคเฉ เจเจฟเจธเฉ เจคเฉเจเฉ เจธเจฅเจฟเจคเฉ เจฌเจพเจฐเฉ เจเฉเจ เจเฉฑเจฒ เจจเจนเฉเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจธเฉเฅค เจฌเจซเจฐ เจเจฟเฉฑเจช เจจเฉเฉฐ เจธเจฟเจเจจเจฒ เจฒเจพเจเจจเจพเจ เจจเจพเจฒ เจฒเฉเฉ เจตเจฟเฉฑเจ เจเฉเฉเฉ 5 Kฮฉ เจฐเฉเจงเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ 3.3V เจคเฉเจ 3,3V เจคเฉฑเจ เจเฉฑเจ เจฎเฉเฉฑเจขเจฒเฉ เจชเฉฑเจงเจฐ เจฆเฉ เจเจจเจตเจฐเจเจฐ เจตเจเฉเจ เจตเจฐเจคเจฟเจ เจเจฟเจ เจธเฉเฅค MISO เจฒเจพเจเจจ เจจเฉเฉฐ เจเฉฑเจก เจเฉเฅค เจเจธเจฆเฉ เจเจเจเจชเฉเฉฑเจ เจนเฉเจ เจฒเฉ เจธเจตเจฟเฉฑเจ เจจเฉ เจธเฉฐเจญเจต เจคเฉเจฐ 'เจคเฉ เจเจผเจฎเฉเจจเฉ เจชเฉฑเจงเจฐ 'เจคเฉ เจธเฉฐเจเฉเจคเจพเจ เจจเฉเฉฐ เจเจเจฐเจธเจผเจฟเจค เจเฉเจคเจพ เจนเฉเฅค เจเจน เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ
เจฆ เจเจฟ MISO เจฒเจพเจเจจ เจฆเจพ เจธเจฎเจฐเฉฑเจฅ เจธเจฟเจเจจเจฒ เจชเจฟเฉฐเจจ 13 เจธเฉ, เจเจธ เจจเฉเฉฐ เจเจฐเฉเจ เจคเฉเจ เจคเฉเฉ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจธเฉ เจ
เจคเฉsoldered9LVS74A 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:
//
//เจเจชเจจ-เจธเจฎเจพเจฐเจ UNO R3 5V / 3.3V:
//
#เจธเจผเจพเจฎเจฒ // เจเฉเจฐ เจเฉเจฐเจพเจซเจฟเจเจธ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ
//#เจธเจผเจพเจฎเจฒ // เจนเจพเจฐเจกเจตเฉเจ
เจฐ-เจตเจฟเจธเจผเฉเจธเจผ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ
#เจธเจผเจพเจฎเจฒ
MCUFRIEND_kbv tft;
#include "SdFat.h" // SdFat เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉ
SdFat SD;
SdFile เจซเจพเจเจฒ;
เจซเจพเจเจฒ เจฎเจพเจเจซเจพเจเจฒ;
#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;
//************************************************** ******************/
// เจเฉ เจคเฉเจธเฉเจ เจเจชเจจ-เจธเจฎเจพเจฐเจ เจเฉเจเจซเจเฉ เจฌเฉเจฐเฉเจเจเจเจ เจฌเฉเจฐเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉ //
// เจคเฉเจนเจพเจจเฉเฉฐ 5V-3.3V เจฒเฉเจตเจฒ เจเจจเจตเจฐเจเจฟเฉฐเจ เจธเจฐเจเจ เจเฉเฉเจจ เจฆเฉ เจธเจฟเจซเจพเจฐเจธเจผ เจเจฐเฉเฅค
// เจฌเฉเจธเจผเฉฑเจ เจคเฉเจธเฉเจ 5V/3.3V เจชเจพเจตเจฐ เจธเจตเจฟเฉฑเจ เจฆเฉ เจจเจพเจฒ เจเจชเจจ-เจธเจฎเจพเจฐเจ UNO เจฌเจฒเฉเจ เจตเจฐเจเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ,
// เจคเฉเจนเจพเจจเฉเฉฐ เจธเจฟเจฐเจซเจผ 3.3V 'เจคเฉ เจธเจตเจฟเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
// LCD เจฒเจ เจเฉฐเจเจฐเฉเจฒ เจชเจฟเฉฐเจจ เจเจฟเจธเฉ เจตเฉ เจกเจฟเจเจผเฉเจเจฒ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ เจเจพเจ
// เจเจจเจพเจฒเจพเจ เจชเจฟเฉฐเจจ...เจชเจฐ เจ
เจธเฉเจ เจเจจเจพเจฒเจพเจ เจชเจฟเฉฐเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจพเจเจเฉ เจเจฟเจเจเจเจฟ เจเจน เจธเจพเจจเฉเฉฐ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ
//โโโโโโโโโโโโโโ-|
// TFT Breakout - Arduino UNO / Mega2560 / OPEN-SMART UNO เจฌเจฒเฉเจ
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// เจเจฐเจกเฉ - เจ 0
// RST - เจฐเฉเจธเฉเจ
// LED - GND
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7
// เจเฉเจ เจเจฎ 16-เจฌเจฟเฉฑเจ เจฐเฉฐเจ เจฎเฉเฉฑเจฒเจพเจ เจฒเจ เจฎเจจเฉเฉฑเจเฉ-เจชเฉเฉเจนเจจ เจฏเฉเจ เจจเจพเจฎ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเฉ:
# เจฌเจฒเฉเจ 0x0000 เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
# เจจเฉเจฒเจพ 0x001F เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
# RED 0xF800 เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
# GREEN 0x07E0 เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
# CYAN 0x07FF เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
#เจฎเฉเจเฉเจเจเจพ 0xF81F เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
#YELLOW 0xFFE0 เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
# เจตเฉเจนเจพเจเจ 0xFFFF เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
#เจเฉเจฐเฉ 0x8C51 เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
#เจเฉเจฐเฉเจก 0x39E7 เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ
//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// เจเฉ เจขเจพเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจฐเจนเฉ เจนเฉ, เจคเจพเจ เจธเจพเจฐเฉ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจ
เจคเฉ เจกเฉเจเจพ เจฒเจพเจเจจเจพเจ เจธเจฅเจฟเจฐ เจนเจจ, เจ
เจคเฉ
// เจเฉฑเจ เจธเจงเจพเจฐเจจ เจเฉเจธเจผเจฃเจพ เจตเจฟเจเจฒเจชเจฟเจ เจคเฉเจฐ 'เจคเฉ เจตเจฐเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉ:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;
เจธเจเฉเจฐเจฟเฉฐเจ เจกเฉเจเจพเจธเจเฉเจฐเจฟเฉฐเจ;
//String numfileMonth = "1.txt";
char perv [] = {"2.txt"};
//เจธเจคเจฐ *numfileMonth="1.txt" (เจเจเจพเจฐ (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(เจเจพเจฒเจพ);
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(เจเจพเจฒเจพ);
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(เจเจพเจฒเจพ);
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);
// เจเฉเจเจฐ เจซเจพเจเจฒ เจเจชเจฒเจฌเจง เจนเฉ, เจคเจพเจ เจเจธเจจเฉเฉฐ เจฒเจฟเจเฉ:
if (myFile) {
เจเจฆเจเจฟ (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;
}
////////เจเฉ เจฐเฉเจกเฉเจ เจฐเจฟเจธเฉเจชเจธเจผเจจ เจเจชเจฒเจฌเจง เจนเฉ, เจคเจพเจ
if (radio.available(&pipe)) {
////////เจเจพเจเจ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ เจเจฟ เจเฉ เจชเฉเจฐเจพเจชเจค เจฌเจซเจฐ เจญเจฐเจฟเจ เจนเฉเจเจ เจนเฉ,
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, เจเฉเจฐเฉเจก);
Serial.println("Lebedki 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;
}
//////// เจนเจฐ 10 เจฎเจฟเฉฐเจ เจฌเจพเจ
เจฆ SD 'เจคเฉ เจฒเฉเจ 'เจคเฉ เจกเฉเจเจพ เจฒเจฟเจเฉเฅค
เจเฉเจเจฐ ((t.min % 10 == 0) && ( t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(เจเจพเจฒเจพ);
//////// .csv เจซเจพเจฐเจฎเฉเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจคเจฐ เจฌเจฃเจพเจเจฃเจพ
เจธเจเฉเจฐเจฟเฉฐเจ เจกเฉเจเจพเจธเจเฉเจฐเจฟเฉฐเจ = เจธเจเฉเจฐเจฟเฉฐเจ (rtc.getDateStr()) + "", "+(rtc.getTimeStr()) + "," + (leb_1) + "," + (leb_2)
+ ", " + (leb_3) + ", " + (leb_4) + ", ";
//////// เจเฉฑเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจฒเจฟเจเฉ เจ
เจคเฉ เจฒเจฟเจเจฃ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉ เจจเจคเฉเจเฉ เจเจเจเจชเฉเฉฑเจ เจเจฐเฉ
myFile = SD.open(perv, FILE_WRITE); // เจเฉเจเจฐ โ2.txtโ เจจเจพเจ เจฆเฉ เจเฉเจ เจซเจพเจเจฒ เจจเจนเฉเจ เจนเฉ, เจคเจพเจ เจเจน เจฌเจฃเจพเจ เจเจพเจตเฉเจเฉเฅค
if (myFile) {
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; target = target + String(m);
}
เจตเจพเจชเจธเฉ เจฆเจพ เจเฉเจเจพ;
} Adafruit_GFX เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจธเจฟเจฐเจฟเจฒเจฟเจ เจเจเจเจชเฉเฉฑเจ เจฒเจ เจ
เฉฑเจเจฐ เจเฉเจฐเจพเจเจธเจเฉเจกเจฟเฉฐเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจฎเฉเฉฑเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฆเฉ เจจเจพเจฒ เจเจธเฉ เจซเฉเจฒเจกเจฐ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฟเจ เจเจฟเจ เจนเฉเฅค เจคเฉเจนเจพเจจเฉเฉฐ Adafruit_GFX เจตเจฟเฉฑเจ glcdfont.c เจซเจพเจเจฒ เจจเฉเฉฐ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจซเฉเจเจ เจจเจพเจฒ เจฌเจฆเจฒเจฃ เจฆเฉ เจตเฉ เจฒเฉเฉ เจนเฉเฅค
เจธเฉฐเจเฉเจช เจเจฐเจจ เจฒเจ, เจฎเฉเจ เจเจนเจพเจเจเจพ เจเจฟ เจธเจฟเจธเจเจฎ เจเจฎเฉเจฆเจพเจ 'เจคเฉ เจเจฐเจพ เจเจคเจฐเจฟเจ, เจธเจพเจเจผ-เจธเจพเจฎเจพเจจ เจฆเฉ เจเจชเจฐเฉเจเจฟเฉฐเจ เจธเจฎเฉเจ เจฆเฉ เจจเจฟเจเจฐเจพเจจเฉ เจเจฐเจจเจพ เจเจธเจพเจจ เจนเฉ เจเจฟเจ เจนเฉ. เจญเจพเจตเฉเจ เจเจฟ เจธเจญ เจเฉเจ เจฐเฉเจเฉ เจฆเฉ เจฌเฉเจฐเจกเจพเจ 'เจคเฉ เจเจเฉฑเจ เจพ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจเฉฐเจฎ เจฌเจพเจฐเฉ เจเฉเจ เจคเฉเจฐเฉฐเจค เจธเจผเจฟเจเจพเจเจคเจพเจ เจจเจนเฉเจ เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ. เจชเจนเจฟเจฒเฉ เจคเฉฑเจค เจเฉ เจฎเจนเฉเจจเจฟเจเจ เจคเฉเจ เจตเฉฑเจง เจธเจฎเฉเจ เจคเฉเจ เจเฉฐเจฎ เจเจฐ เจฐเจนเฉ เจนเจจ เจ
เจคเฉ เจธเจฐเจฆเฉเจเจ เจคเฉเจ เจฌเจเฉ เจนเจจ.
เจธเจฐเฉเจค: www.habr.com