nRF52832 рдкрд░ рдЧреНрд▓рд╛рд╕ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдЖрдЬ рдХреЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЗрд╕ рдмрд╛рд░ рдпрд╣ рдЧреНрд▓рд╛рд╕ рдкреИрдирд▓ рд╡рд╛рд▓рд╛ рдПрдХ рдЯрдЪ рд╕реНрд╡рд┐рдЪ рд╣реИред рдбрд┐рд╡рд╛рдЗрд╕ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИ, рдЗрд╕рдХреА рдорд╛рдк 42x42 рдорд┐рдореА рд╣реИ (рдорд╛рдирдХ рдЧреНрд▓рд╛рд╕ рдкреИрдирд▓ рдХрд╛ рдЖрдпрд╛рдо 80x80 рдорд┐рдореА рд╣реИ)ред рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдмрд╣реБрдд рдкрд╣рд▓реЗ, рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реБрдЖ рдерд╛ред

nRF52832 рдкрд░ рдЧреНрд▓рд╛рд╕ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк atmega328 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдереЗ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдпрд╣ рд╕рдм nRF52832 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ред

nRF52832 рдкрд░ рдЧреНрд▓рд╛рд╕ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЯрдЪ рдкрд╛рд░реНрдЯ TTP223 рдЪрд┐рдкреНрд╕ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рд╕реЗрдВрд╕рд░реЛрдВ рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕реЗрд╡рд╛ рджреА рдЬрд╛рддреА рд╣реИред TPS2477 рдЪрд┐рдк рдкрд░ рдмреВрд╕реНрдЯ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ CR610981 рдмреИрдЯрд░реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд | рдбреЗрдЯрд╛ рд╢реАрдЯ.

nRF52832 рдкрд░ рдЧреНрд▓рд╛рд╕ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ
nRF52832 рдкрд░ рдЧреНрд▓рд╛рд╕ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдорд┐рдиреА рдЯрдЪ рд╕реНрд╡рд┐рдЪ

рдбрд┐рд╡рд╛рдЗрд╕ рдлрд╝реАрд▓реНрдб-рдЗрдлрд╝реЗрдХреНрдЯ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд╡рд░-рдСрдл рд╕рд░реНрдХрд┐рдЯ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реНрд╡рдпрдВ рдмрд┐рдЬрд▓реА рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрд╡рд╛ рдореЛрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдпреБрдЧреНрдорд┐рдд рдХрд░рдирд╛, рдмрд┐рдЬрд▓реА рдмрдВрдж рдХрд░рдирд╛ рдФрд░ рдлрд╝реИрдХреНрдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ)ред

рд░рд╛рдЬреНрдпреЛрдВ рдФрд░ рд╕реЗрд╡рд╛ рдореЛрдб рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдЖрд░рдЬреАрдмреА рдПрд▓рдИрдбреА рд╣реИрдВред рдЯрдЪ рдмрдЯрди рдФрд░ рд╕реЗрд╡рд╛ рдореЛрдб рдХреЗ рдзреНрд╡рдирд┐ рд╕рдВрдХреЗрдд рдХреЛ рдЫреВрдиреЗ рдкрд░ рдПрдХ рдХреНрд▓рд┐рдХ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЬреЛ рдПрдорд┐рдЯрд░ рднреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдПрд▓рдИрдбреА рдФрд░ рдкреАрдЬреЛ рдПрдорд┐рдЯрд░ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рддрдХрдиреАрдХреА рд╕реЗрдВрд╕рд░реЛрдВ рдХреЛ рдХрдорд╛рдВрдб рднреЗрдЬрдХрд░ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдЯрд░реА рдЪрд╛рд░реНрдЬ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рднреЗрдЬрдиреЗ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рднреА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реИ рдШрд░ рдХрд╛ рдкрд░рд┐рдЪрд╛рд▓рдХ.

рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдореЛрдб рдореЗрдВ рдЦрдкрдд 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);
}

рдПрд╕рдЯреАрдПрд▓ рдореЗрдВ рдХреЗрд╕ рдлрд╝рд╛рдЗрд▓реЗрдВ - рдЧреВрдЧрд▓ рд╣рд╛рдБрдХрдирд╛

рдЧреЗрд░рдмрд░ рдкреАрд╕реАрдмреА рдлрд╝рд╛рдЗрд▓реЗрдВ - рдЧреВрдЧрд▓ рд╣рд╛рдБрдХрдирд╛

рдЗрд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, Arduinos рдФрд░ Mysensors рдкрд░ рдЖрдкрдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдЯ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдорджрдж рдорд┐рд▓реЗрдЧреА - https://t.me/mysensors_rus.

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ