nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš

เช†เชœเชจเชพ เชฒเซ‡เช–เชฎเชพเช‚ เชนเซเช‚ เชคเชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เชเช• เชจเชตเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เช† เชตเช–เชคเซ‡ เชคเซ‡ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชŸเชš เชธเซเชตเชฟเชš เช›เซ‡. เช‰เชชเช•เชฐเชฃ เช•เซ‹เชฎเซเชชเซ‡เช•เซเชŸ เช›เซ‡, 42x42mm เชฎเชพเชชเซ‡ เช›เซ‡ (เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เช—เซเชฒเชพเชธ เชชเซ‡เชจเชฒเซเชธเชฎเชพเช‚ 80x80mm เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชนเซ‹เชฏ เช›เซ‡). เช† เช‰เชชเช•เชฐเชฃเชจเซ‹ เช‡เชคเชฟเชนเชพเชธ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชชเชนเซ‡เชฒเชพ, เชฒเช—เชญเช— เชเช• เชตเชฐเซเชท เชชเชนเซ‡เชฒเชพ เชถเชฐเซ‚ เชฅเชฏเซ‹ เชนเชคเซ‹.

nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš

เชชเซเชฐเชฅเชฎ เชตเชฟเช•เชฒเซเชชเซ‹ atmega328 เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐ เชชเชฐ เชนเชคเชพ, เชชเชฐเช‚เชคเซ เช…เช‚เชคเซ‡ เชคเซ‡ เชฌเชงเชพ nRF52832 เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐ เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชฏเชพ.

nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš

เช‰เชชเช•เชฐเชฃเชจเซ‹ เชŸเชš เชญเชพเช— TTP223 เชšเชฟเชชเซเชธ เชชเชฐ เชšเชพเชฒเซ‡ เช›เซ‡. เชฌเช‚เชจเซ‡ เชธเซ‡เชจเซเชธเชฐ เชเช• เชตเชฟเช•เซเชทเซ‡เชช เชฆเซเชตเชพเชฐเชพ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡. CR2477 เชฌเซ‡เชŸเชฐเซ€ เชฆเซเชตเชพเชฐเชพ เชธเช‚เชšเชพเชฒเชฟเชค, TPS610981 เชšเชฟเชช เชชเชฐ เชฌเซเชธเซเชŸ เช•เชจเซเชตเชฐเซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ | เชกเซ‡เชŸเชพเชถเซ€เชŸ.

nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš
nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš

เช‰เชชเช•เชฐเชฃ เชซเซ€เชฒเซเชก-เช‡เชซเซ‡เช•เซเชŸ เชŸเซเชฐเชพเชจเซเชเชฟเชธเซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเชพเชตเชฐ-เช‘เชซ เชธเชฐเซเช•เชฟเชŸ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡. เชฌเชŸเชจ เชฆเชฌเชพเชตเซเชฏเชพ เชชเช›เซ€, เชฎเชพเช‡เช•เซเชฐเซ‹เช•เชจเซเชŸเซเชฐเซ‹เชฒเชฐ เชชเซ‹เชคเซ‡ เชชเชพเชตเชฐ เช•เช‚เชŸเซเชฐเซ‹เชฒเชจเซ‡ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชฌเชŸเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเชฐเซเชตเชฟเชธ เชฎเซ‹เชกเซเชธ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ (เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช† เช…เชจเซเชฏ เช‰เชชเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชœเซ‹เชกเซ€ เชฌเชจเชพเชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡, เชชเชพเชตเชฐ เชฌเช‚เชง เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชซเซ‡เช•เซเชŸเชฐเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชชเชฐ เชซเชฐเซ€เชฅเซ€ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡).

เชธเซเชŸเซ‡เชŸเซเชธ เช…เชจเซ‡ เชธเชฐเซเชตเชฟเชธ เชฎเซ‹เชกเซเชธ เชฆเชฐเซเชถเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ 2 rgb LEDs เช›เซ‡. เชŸเชš เชฌเชŸเชจเซ‹ เช…เชจเซ‡ เชธเชฐเซเชตเชฟเชธ เชฎเซ‹เชกเซเชธเชจเชพ เชงเซเชตเชจเชฟ เชธเช‚เช•เซ‡เชคเชจเซ‡ เชธเซเชชเชฐเซเชถ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เซเชฒเชฟเช•เชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ€เชเซ‹ เชเชฎเชฟเชŸเชฐ เชชเชฃ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. LEDs เช…เชจเซ‡ piezo emitter เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชตเชฟเชตเซ‡เช•เชฌเซเชฆเซเชงเชฟเชฅเซ€ เชšเชพเชฒเซ เช…เชจเซ‡ เชฌเช‚เชง เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เชธเซเชฎเชพเชฐเซเชŸ เชนเซ‹เชฎ เช•เช‚เชŸเซเชฐเซ‹เชฒเชฐ เชฆเซเชตเชพเชฐเชพ เชŸเซ‡เช•เซเชจเชฟเช•เชฒ เชธเซ‡เชจเซเชธเชฐเซเชธเชจเซ‡ เช†เชฆเซ‡เชถเซ‹ เชฎเซ‹เช•เชฒเซ€เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡; เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชธเซเชฎเชพเชฐเซเชŸ เชนเซ‹เชฎ เช•เช‚เชŸเซเชฐเซ‹เชฒเชฐ เชฆเซเชตเชพเชฐเชพ เชฌเซ‡เชŸเชฐเซ€ เชšเชพเชฐเซเชœ เช…เชจเซ‡ เชธเชฟเช—เซเชจเชฒ เชฒเซ‡เชตเชฒ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เช…เช‚เชคเชฐเชพเชฒเซ‹เชจเซ‡ เชชเชฃ เชฌเชฆเชฒเซ€ เชถเช•เซ‡ เช›เซ‡. เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเซ‡ เช›เซ‡ เชฎเซ‡เชœเซ‹เชฐเซเชกเซ‹เชฎเซ‹.

เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เชฎเซ‹เชกเชฎเชพเช‚ เชตเชชเชฐเชพเชถ 7mA (250kbit, 10ms), เชธเซเชฒเซ€เชชเชฎเชพเช‚ เชตเชชเชฐเชพเชถ 40ยตA เช›เซ‡, เชฌเช‚เชง เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชตเชชเชฐเชพเชถ 1ยตA (= โ€œเชจเชฟเชทเซเช•เซเชฐเชฟเชฏโ€ เชฎเซ‹เชกเชฎเชพเช‚ เชฌเซ‚เชธเซเชŸ เช•เชจเซเชตเชฐเซเชŸเชฐเชจเซ‹ เชตเชชเชฐเชพเชถ) เช•เชฐเชคเชพเช‚ เช“เช›เซ‹ เช›เซ‡. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฎเชพเชŸเซ‡ Rx, tx, swd เช•เชจเซ‡เช•เซเชŸเชฐ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. 2 เชจเซ€ เชชเชฟเชš เชธเชพเชฅเซ‡ เชฒเช˜เซเชšเชฟเชคเซเชฐ 3x1.27p เช•เชจเซ‡เช•เซเชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฎเชพเชŸเซ‡ เช–เชพเชธ เชเชกเซ‡เชชเซเชŸเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš

เชนเช‚เชฎเซ‡เชถเชจเซ€ เชœเซ‡เชฎ, เช‰เชชเช•เชฐเชฃเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เชฎเชพเชฏเชธเซ‡เชจเซเชธเชฐเซเชธ. เช† เชŸเชš เชธเซเชตเซ€เชšเชจเซ‹ เชฐเซ‹เชฒเชฐ เชฌเซเชฒเชพเชˆเชจเซเชก เช•เช‚เชŸเซเชฐเซ‹เชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เช†เชฏเซ‹เชœเชจ เช›เซ‡. เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชซเช•เซเชค เชคเชฎเชพเชฐเซ€ เช•เชฒเซเชชเชจเชพ เชฆเซเชตเชพเชฐเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฎเชพเชฐเชพ เชชเซเชคเซเชฐ (7 เชตเชฐเซเชทเชจเซ‹) เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชธเซเชตเชฟเชš เชตเชฐเซเชเชจ เชฎเชพเชŸเซ‡ 3 เช“เชฐเซเชกเชฐ เช•เชฐเซ€ เชšเซ‚เช•เซเชฏเซ‹ เช›เซ‡: เชฌเชพเชฅเชŸเชฌเชตเชพเชณเชพ เชถเซŒเชšเชพเชฒเชฏเชฎเชพเช‚ เชฒเชพเช‡เชŸ เชšเชพเชฒเซ เช…เชจเซ‡ เชฌเช‚เชง เช•เชฐเชตเชพ (เชคเซ‡ เชซเซเชฒเซ‹เชฐเชฅเซ€ เชจเซ€เชšเซเช‚ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡), เชฒเชพเช‡เชŸ เชšเชพเชฒเซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฒเชพเช‚เชฌเชพ เช…เชจเซ‡ เชถเซเชฏเชพเชฎ เช•เซ‹เชฐเชฟเชกเซ‹เชฐ เชœเซเชฏเชพเชฐเซ‡ เชฌเชพเชฅเชŸเชฌ เชธเชพเชฅเซ‡ เชถเซŒเชšเชพเชฒเชฏเชฎเชพเช‚ เชฎเซเชธเชพเชซเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซ‹ เชเช• เชฌเซ‡เชกเชธเชพเช‡เชก เชคเชฐเซ€เช•เซ‡, เชคเชฎเชพเชฐเชพ เชฐเซ‚เชฎเชฎเชพเช‚ เชเชกเชชเชฅเซ€ เชชเซเชฐเช•เชพเชถ เชšเชพเชฒเซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเซ‡เชฅเซ€ เชฐเชพเช•เซเชทเชธเซ‹ เชญเชพเช—เซ€ เชœเชพเชฏ.

nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš
nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš
nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš

เช•เซ‡เชธ เชชเชฐเช‚เชชเชฐเชพเช—เชค เชฐเซ€เชคเซ‡ SLA เชชเซเชฐเชฟเชจเซเชŸเชฐ เชชเชฐ เช›เชพเชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เช‰เชชเช•เชฐเชฃ เชฒเช˜เซเชšเชฟเชคเซเชฐ เช›เซ‡, เช•เซ‡เชธ เชจเชพเชจเซ‹ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เช† เชชเซเชฐเชฟเชจเซเชŸเซ€เช‚เช— เชคเช•เชจเซ€เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชตเชพเชœเชฌเซ€ เช›เซ‡.

เชชเซเชฐเชฟเชจเซเชŸเซ‡เชก เชฎเซ‹เชกเชฒ เชœเซเช“nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš
nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš
nRF52832 เชชเชฐ เช•เชพเชšเชจเซ€ เชชเซ‡เชจเชฒ เชธเชพเชฅเซ‡ เชฎเซ€เชจเซ€ เชŸเชš เชธเซเชตเชฟเชš

เชšเซเช‚เชฌเช• เช•เซ‡เชธ เช…เชจเซ‡ เชฌเซ‡เชŸเชฐเซ€ เช•เชฎเซเชชเชพเชฐเซเชŸเชฎเซ‡เชจเซเชŸ เช•เชตเชฐเชฎเชพเช‚ เช—เซเช‚เชฆเชฐ เชงเชฐเชพเชตเชคเชพ เชนเซ‹เชฏ เช›เซ‡.

เช† เช‰เชชเช•เชฐเชฃเชจเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡ เชตเชฟเชกเชฟเช“เช:



เชœเซ‡เช“ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡:

Arduino IDE เชฎเชพเชŸเซ‡ เชฐเซ‹เชฒเชฐ เชฌเซเชฒเชพเช‡เชจเซเชก เช•เช‚เชŸเซเชฐเซ‹เชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชธเซเชตเชฟเชš เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซ‹เชกเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ‹

Arduino เชตเชพเชฏเชฐเชฟเช‚เช—

int8_t timer_status = 0;
boolean sens_flag1 = 0;
boolean sens_flag2 = 0;
boolean switch_a = 0;
boolean switch_b = 0;
uint16_t temp;
float vcc;
int battery;
int old_battery;
uint32_t oldmillis;
uint32_t newmillis;
uint32_t interrupt_time;
uint32_t SLEEP_TIME = 7000;
uint32_t SLEEP_TIME_W;
uint32_t SLEEP_TIME_W2;
int NrfRSSI;
uint16_t NrfRSSI2;
boolean wait_off;
//#define MY_DEBUG
#define MY_DISABLED_SERIAL
#define MY_RADIO_NRF5_ESB
#define MY_PASSIVE_NODE
#define MY_NODE_ID 120
#define MY_PARENT_NODE_ID 0
#define MY_PARENT_NODE_IS_STATIC
#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define POWER_CHILD_ID 110
#define UP_POWER_SWITCH_ID 1
#define DOWN_POWER_SWITCH_ID 2
#define CHILD_ID_nRF52_RSSI_RX 3
#define BAT_COOF 0.0092957746478873
#define BAT_MIN 200
#define BAT_MAX 290
#include <MySensors.h>
MyMessage upMsg(UP_POWER_SWITCH_ID, V_STATUS);
MyMessage downMsg(DOWN_POWER_SWITCH_ID, V_STATUS);
MyMessage powerMsg(POWER_CHILD_ID, V_VAR1);
MyMessage msgRF52RssiReceiv(CHILD_ID_nRF52_RSSI_RX, V_VAR1);
void preHwInit() {
pinMode(31, OUTPUT); //power management pin
digitalWrite(31, HIGH);
delay(3000);
pinMode(3, INPUT); // on off mode button
pinMode(25, OUTPUT); // sens1 led
pinMode(26, OUTPUT); // sens1 led
pinMode(27, OUTPUT); // sens1 led
pinMode(6, OUTPUT); // sens21 led
pinMode(7, OUTPUT); // sens2 led
pinMode(8, OUTPUT); // sens2 led
pinMode(28, OUTPUT); // bizzer
pinMode(2, INPUT); // common interrupt for touch sensors
pinMode(9, INPUT); // touch sensors1
pinMode(10, INPUT); //touch sensors2
pinMode(29, INPUT); // battery
digitalWrite(28, LOW);
digitalWrite(27, HIGH);
digitalWrite(26, HIGH);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
void before()
{
NRF_POWER->DCDCEN = 1;
analogReadResolution(12);
disableNfc();
turnOffAdc();
digitalWrite(25, LOW);
digitalWrite(6, LOW);
wait(200);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
wait(100);
playSound0();
wait(100);
digitalWrite(25, LOW);
digitalWrite(6, LOW);
wait(200);
digitalWrite(25, HIGH);
digitalWrite(6, HIGH);
wait(3000);
digitalWrite(27, LOW);
digitalWrite(8, LOW);
wait(200);
digitalWrite(27, HIGH);
digitalWrite(8, HIGH);
wait(400);
digitalWrite(6, LOW);
digitalWrite(25, LOW);
wait(200);
digitalWrite(6, HIGH);
digitalWrite(25, HIGH);
wait(400);
digitalWrite(26, LOW);
digitalWrite(7, LOW);
wait(200);
digitalWrite(26, HIGH);
digitalWrite(7, HIGH);
wait(1000);
digitalWrite(26, LOW);
digitalWrite(7, LOW);
}
void setup()
{
digitalWrite(26, HIGH);
digitalWrite(7, HIGH);
wait(50);
playSound();
wait(2000);
readBatLev();
wait(200);
SLEEP_TIME_W = SLEEP_TIME;
}
void presentation()
{
sendSketchInfo("EFEKTA ON|OFF NODE 2CH", "1.0");
wait(100);
present(POWER_CHILD_ID, S_CUSTOM, "BATTERY DATA");
wait(100);
present(UP_POWER_SWITCH_ID, S_BINARY, "UP SWITCH");
wait(100);
present(DOWN_POWER_SWITCH_ID, S_BINARY, "DOWN SWITCH");
}
void loop()
{
if (sens_flag1 == 0 && sens_flag2 == 0) {
if (switch_a == 0 && switch_b == 0) {
timer_status = sleep(digitalPinToInterrupt(2), RISING, digitalPinToInterrupt(3), RISING, 3600000, false);
wait_off = 1;
} else {
//oldmillis = millis();
timer_status = sleep(digitalPinToInterrupt(2), RISING, digitalPinToInterrupt(3), RISING, SLEEP_TIME_W, false);
wait_off = 0;
}
}
if (timer_status == 3) {
wait(100);
digitalWrite(27, LOW);
digitalWrite(8, LOW);
wait(2000);
digitalWrite(27, HIGH);
digitalWrite(8, HIGH);
wait(100);
digitalWrite(31, LOW);
}
if (timer_status == 2) {
if (digitalRead(9) == HIGH && sens_flag1 == 0 && switch_b == 0) {
sens_flag1 = 1;
if (switch_a == 0) {
oldmillis = millis();
SLEEP_TIME_W = SLEEP_TIME;
switch_a = 1;
digitalWrite(6, LOW);
wait(10);
playSound1();
wait(20);
playSound2();
wait(50);
send(upMsg.set(switch_a));
wait(200);
} else {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
}
if (digitalRead(10) == HIGH && sens_flag2 == 0 && switch_a == 0) {
sens_flag2 = 1;
if (switch_b == 0) {
oldmillis = millis();
SLEEP_TIME_W = SLEEP_TIME;
switch_b = 1;
digitalWrite(25, LOW);
wait(10);
playSound1();
wait(20);
playSound2();
wait(50);
send(downMsg.set(switch_b));
wait(200);
} else {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
}
if (digitalRead(9) == LOW && sens_flag1 == 1) {
sens_flag1 = 0;
}
if (digitalRead(10) == LOW && sens_flag2 == 1) {
sens_flag2 = 0;
}
if (switch_a == 1 || switch_b == 1) {
if (wait_off == 0) {
newmillis = millis();
wait(10);
SLEEP_TIME_W2 = SLEEP_TIME_W;
wait(10);
interrupt_time = newmillis - oldmillis;
wait(10);
SLEEP_TIME_W = SLEEP_TIME_W2 - interrupt_time;
wait(10);
Serial.print("WAS IN A SLEEP: ");
Serial.print(newmillis - oldmillis);
Serial.println(" MILLISECONDS");
if (SLEEP_TIME_W < 1000) {
if (switch_a == 1) {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
if (switch_b == 1) {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
SLEEP_TIME_W = SLEEP_TIME;
wait(50);
}
Serial.println(SLEEP_TIME);
Serial.println(SLEEP_TIME_W);
Serial.println(SLEEP_TIME_W2);
Serial.print("GO TO SLEEP FOR: ");
Serial.print(SLEEP_TIME_W);
Serial.println(" MILLISECONDS");
}
oldmillis = millis();
}
}
if (timer_status == -1) {
if (switch_a == 1 || switch_b == 1) {
if (switch_a == 1) {
switch_a = 0;
digitalWrite(6, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(upMsg.set(switch_a));
wait(200);
}
if (switch_b == 1) {
switch_b = 0;
digitalWrite(25, HIGH);
wait(10);
playSound2();
wait(20);
playSound1();
wait(50);
send(downMsg.set(switch_b));
wait(200);
}
} else {
readBatLev();
}
}
}
void disableNfc() {
NRF_NFCT->TASKS_DISABLE = 1;
NRF_NVMC->CONFIG = 1;
NRF_UICR->NFCPINS = 0;
NRF_NVMC->CONFIG = 0;
}
void turnOffAdc() {
if (NRF_SAADC->ENABLE) {
NRF_SAADC->TASKS_STOP = 1;
while (NRF_SAADC->EVENTS_STOPPED) {}
NRF_SAADC->ENABLE = 0;
while (NRF_SAADC->ENABLE) {}
}
}
void myTone(uint32_t j, uint32_t k) {
j = 500000 / j;
k += millis();
while (k > millis()) {
digitalWrite(28, HIGH); delayMicroseconds(j);
digitalWrite(28, LOW ); delayMicroseconds(j);
}
}
void playSound0() {
myTone(1300, 50);
wait(20);
myTone(1300, 50);
wait(50);
}
void playSound() {
myTone(700, 30); 
wait(10);
myTone(700, 30);
wait(10);
myTone(700, 30);
wait(50);
}
void playSound1() {
myTone(200, 10);
wait(10);
myTone(400, 5);
wait(30);
}
void playSound2() {
myTone(400, 10);
wait(10);
myTone(200, 5);
wait(30);
}
void readBatLev() {
temp = analogRead(29);
vcc = temp * 0.0033 * 100;
battery = map((int)vcc, BAT_MIN, BAT_MAX, 0, 100);
if (battery < 0) {
battery = 0;
}
if (battery > 100) {
battery = 100;
}
sendBatteryLevel(battery, 1);
wait(2000, C_INTERNAL, I_BATTERY_LEVEL);
send(powerMsg.set(temp));
wait(200);
NrfRSSI = transportGetReceivingRSSI();
NrfRSSI2 = map(NrfRSSI, -85, -40, 0, 100);
if (NrfRSSI2 < 0) {
NrfRSSI2 = 0;
}
if (NrfRSSI2 > 100) {
NrfRSSI2 = 100;
}
send(msgRF52RssiReceiv.set(NrfRSSI2));
wait(200);
}

เช•เซ‡เชธ เชซเชพเช‡เชฒเซ‹ stl เชฎเชพเช‚ - เช—เซเช—เชฒ เชกเซเชฐเชพเชˆเชต

เช—เซ‡เชฐเซเชฌเชฐ เชชเซ€เชธเซ€เชฌเซ€ เชซเชพเช‡เชฒเซ‹ - เช—เซเช—เชฒ เชกเซเชฐเชพเชˆเชต

เช† เชตเชฟเช•เชพเชธ เชตเชฟเชถเซ‡เชจเชพ เชชเซเชฐเชถเซเชจเซ‹ เชฎเชพเชŸเซ‡, Arduinos เช…เชจเซ‡ Mysensors เชชเชฐเชจเชพ เชคเชฎเชพเชฐเชพ เชตเชฟเช•เชพเชธเชฎเชพเช‚ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชตเชฟเชถเซ‡ เช…เชฎเชพเชฐเซ€ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชšเซ‡เชŸเชฎเชพเช‚ เชนเช‚เชฎเซ‡เชถเชพ เชฌเชšเชพเชตเชฎเชพเช‚ เช†เชตเชถเซ‡ - https://t.me/mysensors_rus.

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

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