diff --git a/LightCtrlMyS/src/main.cpp b/LightCtrlMyS/src/main.cpp index c5e1218..ccfbeb8 100644 --- a/LightCtrlMyS/src/main.cpp +++ b/LightCtrlMyS/src/main.cpp @@ -17,12 +17,11 @@ // #undef MY_NODE_ID // #define MY_NODE_ID 14 +int8_t buttWU = MY_WAKE_UP_BY_TIMER; -bool stat1, stat2, Ack; void presentation(); -void sendData(MyMessage msg, bool status); -void sendData(MyMessage msg, uint32_t status); -void sendData(MyMessage msg, float status); +void sendDataI(MyMessage msg, uint32_t status); +void sendDataF(MyMessage msg, float status); MyMessage msgLamp1(0, V_STATUS); MyMessage msgLamp2(1, V_STATUS); @@ -45,21 +44,17 @@ void loop() { int sensorValue = analogRead(BATTERY_SENSE_PIN); float v = sensorValue * 0.004659498; - butt1.update(); - butt2.update(); - if(butt1.fell()){ - stat1 = !stat1; - sendData(msgLamp1, !stat1); - Serial.print(F("Change Sock1: ")); Serial.println(stat1); + if(buttWU == digitalPinToInterrupt(BUTT1)){ + sendDataI(msgLamp1, (uint8_t)1); + Serial.print(F("Pressed: 1")); } - if(butt2.fell()){ - stat2 = !stat2; - sendData(msgLamp2, !stat2); - Serial.print(F("Change Sock2: ")); Serial.println(stat2); + if(buttWU == digitalPinToInterrupt(BUTT2)){ + sendDataI(msgLamp2, (uint8_t)1); + Serial.print(F("Pressed: 2")); } - sendData(msgMillis, cRun); - sendData(msgVoltage, v); - sleep(digitalPinToInterrupt(BUTT1), FALLING, digitalPinToInterrupt(BUTT2), FALLING, 300000); + sendDataI(msgMillis, cRun); + sendDataF(msgVoltage, v); + buttWU = sleep(digitalPinToInterrupt(BUTT1), FALLING, digitalPinToInterrupt(BUTT2), FALLING, 300000); } void presentation() @@ -70,27 +65,10 @@ void presentation() present(2, S_CUSTOM, "MillisVoltage"); } -void sendData(MyMessage msg, bool status) +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(status), true); - if(!send_data) - wait(1000, C_SET, msg.type); - if ((count == 3 )&&(send_data == 0)){ // Если сделано 3 попытки и нет подтверждения отправки - count = 0; // Обнуляем счётчик - send_data = 1; // Выходим из цикла - } - } -} - -void sendData(MyMessage msg, uint32_t val) -{ - bool send_data = false; - uint8_t count = 0; - Ack = false; while(send_data == false){ count++; send_data = send(msg.set(val), true); @@ -103,11 +81,10 @@ void sendData(MyMessage msg, uint32_t val) } } -void sendData(MyMessage msg, float val) +void sendDataF(MyMessage msg, float val) { bool send_data = false; uint8_t count = 0; - Ack = false; while(send_data == false){ count++; send_data = send(msg.set(val, 2), true);