#include #define MY_DEBUG #define MY_RADIO_RF24 #define MY_RF24_CHANNEL (105) #define MY_RF24_PA_LEVEL RF24_PA_MAX #define MY_DEFAULT_ERR_LED_PIN (4) // Error led pin #define MY_DEFAULT_RX_LED_PIN (5) // Receive led pin #define MY_DEFAULT_TX_LED_PIN (6) // the PCB, on board LED #define BUTT1 2 #define BUTT2 3 #define TIME_SLEEP 5 //Minutes #include //#include // #undef MY_NODE_ID // #define MY_NODE_ID 14 int8_t buttWU = MY_WAKE_UP_BY_TIMER; uint16_t workMins = 0; void presentation(); void sendDataI(MyMessage msg, uint32_t status); void sendDataF(MyMessage msg, float status); MyMessage msgLamp1(0, V_STATUS); MyMessage msgLamp2(1, V_STATUS); MyMessage msgMillis(2, V_VAR1); MyMessage msgVoltage(2, V_VAR2); int BATTERY_SENSE_PIN = A0; void setup() { analogReference(INTERNAL); pinMode(BUTT1, INPUT_PULLUP); pinMode(BUTT2, INPUT_PULLUP); } void loop() { int sensorValue = analogRead(BATTERY_SENSE_PIN); float v = sensorValue * 0.0039561775471698; if(buttWU == digitalPinToInterrupt(BUTT1)){ sendDataI(msgLamp1, (uint8_t)1); wait(30); Serial.println(F("Pressed: 1")); } if(buttWU == digitalPinToInterrupt(BUTT2)){ sendDataI(msgLamp2, (uint8_t)1); wait(30); Serial.println(F("Pressed: 2")); } sendDataF(msgVoltage, v); buttWU = sleep(digitalPinToInterrupt(BUTT1), FALLING, digitalPinToInterrupt(BUTT2), FALLING, TIME_SLEEP * 60000); } void presentation() { sendSketchInfo("LampCtrl", "1.0"); present(0, S_BINARY, "Lamp1"); present(1, S_BINARY, "Lamp2"); present(2, S_CUSTOM, "MillisVoltage"); } void sendDataI(MyMessage msg, uint32_t val) { bool send_data = false; uint8_t count = 0; while(send_data == false){ count++; send_data = send(msg.set(val), true); if(!send_data) wait(500, C_SET, msg.type); if ((count == 3) && (send_data == 0)){ // Если сделано 3 попытки и нет подтверждения отправки count = 0; // Обнуляем счётчик send_data = 1; // Выходим из цикла } } } void sendDataF(MyMessage msg, float val) { bool send_data = false; uint8_t count = 0; while(send_data == false){ count++; send_data = send(msg.set(val, 2), true); if(!send_data) wait(500, C_SET, msg.type); if ((count == 3) && (send_data == 0)){ // Если сделано 3 попытки и нет подтверждения отправки count = 0; // Обнуляем счётчик send_data = 1; // Выходим из цикла } } }