เชธเซเชฅเชพเชจเชฟเช• เชธเซเชตเชพเชฏเชคเซเชค เชกเซ‡เชŸเชพ เชเช•เซเชตเชฟเชเชฟเชถเชจ เชธเชฟเชธเซเชŸเชฎ (เชšเชพเชฒเซ)

เช† เชธเชพเช‡เชŸ เชชเชฐ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‹ เชฒเชฟเช‚เช•.
เชธเซเชŸเชพเชฐเซเชŸเชฐ เชšเชพเชฒเซ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชธเซŒเชฅเซ€ เช…เชจเซเช•เซ‚เชณ เชตเชฟเช•เชฒเซเชช PC817 optocoupler เชธเชพเชฅเซ‡เชจเซ‹ เชตเชฟเช•เชฒเซเชช เชฌเชจเซเชฏเซ‹. เชฏเซ‹เชœเชจเชพเช•เซ€เชฏ เชฐเซ‡เช–เชพเช•เซƒเชคเชฟเชธเซเชฅเชพเชจเชฟเช• เชธเซเชตเชพเชฏเชคเซเชค เชกเซ‡เชŸเชพ เชเช•เซเชตเชฟเชเชฟเชถเชจ เชธเชฟเชธเซเชŸเชฎ (เชšเชพเชฒเซ)เชฌเซ‹เชฐเซเชกเชฎเชพเช‚ เชคเซเชฐเชฃ เชธเชฐเช–เชพ เชธเชฐเซเช•เชฟเชŸเซเชธ เชนเซ‹เชฏ เช›เซ‡, เชฌเชงเซเช‚ เชเชฌเซ€เชเชธ เชชเซเชฒเชพเชธเซเชŸเชฟเช• เชฌเซ‹เช•เซเชธเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช•เชฆ 100x100 เชฎเซ€เชฎเซ€. เช“เชชเซเชŸเซ‹เช•เชชเซเชฒเชฐเซเชธเชจเซ‹ เชซเซ‹เชŸเซ‹เชธเซเชฅเชพเชจเชฟเช• เชธเซเชตเชพเชฏเชคเซเชค เชกเซ‡เชŸเชพ เชเช•เซเชตเชฟเชเชฟเชถเชจ เชธเชฟเชธเซเชŸเชฎ (เชšเชพเชฒเซ) เชœเซเชฏเชพเชฐเซ‡ เชธเซ‡เชฎเซ€เช•เชจเซเชกเช•เซเชŸเชฐ เชตเชพเชฒเซเชต เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เชฅเชคเชพ เช‰เชชเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เชนเซ‹เชฏ, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชฎเชจเซ‹ เชฒเชฟเช•เซ‡เชœ เชตเชฐเซเชคเชฎเชพเชจ PC817 เช–เซ‹เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซ‹ เช›เซ‡ เช…เชจเซ‡ เช•เชพเช‰เชจเซเชŸเชฐ เช–เซ‹เชŸเซ€ เชฐเซ€เชคเซ‡ เชŸเซเชฐเชฟเช—เชฐ เชฅเชถเซ‡. เช†เชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชฌเชพเช•เชพเชค เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเซ‹เช•เชชเซเชฒเชฐ LED เช…เชจเซ‡ เช‘เชชเชฐเซ‡เชถเชจ เช‡เชจเซเชกเชฟเช•เซ‡เชถเชจ LED เชจเชพ เชธเชฐเซเช•เชฟเชŸเชฎเชพเช‚ เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ เชตเชงเซ เชเช• เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชœเชฎเซเชชเชฐ J1 เช–เซ‹เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ LED LED1 เชธเซ‹เชฒเซเชกเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
เชชเซเชฐเชพเชชเซเชค เชญเชพเช— เชชเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชฌเชพเชœเซ 1เชธเซเชฅเชพเชจเชฟเช• เชธเซเชตเชพเชฏเชคเซเชค เชกเซ‡เชŸเชพ เชเช•เซเชตเชฟเชเชฟเชถเชจ เชธเชฟเชธเซเชŸเชฎ (เชšเชพเชฒเซ)เชฌเชพเชœเซ 2เชธเซเชฅเชพเชจเชฟเช• เชธเซเชตเชพเชฏเชคเซเชค เชกเซ‡เชŸเชพ เชเช•เซเชตเชฟเชเชฟเชถเชจ เชธเชฟเชธเซเชŸเชฎ (เชšเชพเชฒเซ)ARDUINO 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 เชฎเชพเช‚ เชธเช‚เชฌเช‚เชงเชฟเชค เชŸเชฟเชชเซเชชเชฃเซ€เช“ เชœเซเช“.
เช“เชชเชจ-เชธเซเชฎเชพเชฐเซเชŸ เชŸเซ€เชฎ เช…เชจเซ‡ เช•เซ‡เชŸเซ‡เชฒเซ‡เช•เซเชธ เชŸเซ€เชฎ เชฆเซเชตเชพเชฐเชพ //
//[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]
//เชฆเซเช•เชพเชจ: dx.com
// open-smart.aliexpress.com/store/1199788
//เชกเซ‡เชฎเซ‹ เช•เชพเชฐเซเชฏ: เช—เซเชฐเชพเชซเชฟเช•เซเชธ, เช…เช•เซเชทเชฐเซ‹ เชฆเชฐเซเชถเชพเชตเซ‹
//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:
// www.aliexpress.com/store/product/3-2-TFT-LCD-Display-module-Touch-Screen-Shield-board-onboard-temperature-sensor-w-Touch-Pen/1199788_32755473754.html?spm=2114.12010615.0.0.bXDdc3
//OPEN-SMART UNO R3 5V / 3.3V:
// www.aliexpress.com/store/product/OPEN-SMART-5V-3-3V-Compatible-UNO-R3-CH340G-ATMEGA328P-Development-Board-with-USB-Cable-for/1199788_32758607490.html?spm=2114.12010615.0.0.ckMTaN

# เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ // เช•เซ‹เชฐ เช—เซเชฐเชพเชซเชฟเช•เซเชธ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€
//#เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเซ‹ // เชนเชพเชฐเซเชกเชตเซ‡เชฐ-เชตเชฟเชถเชฟเชทเซเชŸ เชชเซเชธเซเชคเช•เชพเชฒเชฏ
# เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡
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 เชซเชพเช‡เชฒเชจเซ‡ เช…เชฒเช— เชซเซ‹เชจเซเชŸ เชธเชพเชฅเซ‡ เชฌเชฆเชฒเชตเชพเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เชธเชพเชฅเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€. Russification เชตเชฟเชถเซ‡ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เชธเชฐเชณเชคเชพเชฅเซ€ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡.
เชธเชพเชฐเชพเช‚เชถ เชฎเชพเชŸเซ‡, เชนเซเช‚ เช•เชนเซ€เชถ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎ เช…เชชเซ‡เช•เซเชทเชพเช“ เชชเชฐ เชœเซ€เชตเซ€ เชฐเชนเซ€ เช›เซ‡, เชธเชพเชงเชจเชธเชพเชฎเช—เซเชฐเซ€เชจเชพ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฎเชฏเชจเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐ เช•เชฐเชตเชพเชจเซเช‚ เชตเชงเซ เชธเชฐเชณ เชฌเชจเซเชฏเซเช‚ เช›เซ‡. เชฌเซเชฐเซ‡เชกเชฌเซ‹เชฐเซเชกเซเชธ เชชเชฐ เชฌเชงเซเช‚ เชœ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เช•เชพเชฎ เชตเชฟเชถเซ‡ เช•เซ‹เชˆ เชคเชพเชคเซเช•เชพเชฒเชฟเช• เชซเชฐเชฟเชฏเชพเชฆเซ‹ เชจเชฅเซ€. เชชเซเชฐเชฅเชฎ เชคเชคเซเชตเซ‹ เช› เชฎเชนเชฟเชจเชพเชฅเซ€ เชตเชงเซ เชธเชฎเชฏเชฅเซ€ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เช…เชจเซ‡ เชถเชฟเชฏเชพเชณเชพเชฎเชพเช‚ เชฌเชšเซ€ เช—เชฏเชพ เช›เซ‡. เชจเชตเซ€เชจเชคเชฎ เชกเชฟเชเชพเช‡เชจ เชคเซ‡ 9เชฎเซ€ เชฎเชพเชฐเซเชšเชฅเซ€ 5 เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เชเช•เชฎเซ‹ เชฎเชพเชŸเซ‡ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฎเชฏ เชธเชคเซเชคเชพเชตเชพเชฐ เชฐเซ€เชคเซ‡ เชจเซ‹เช‚เชงเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹