/*****************************************/ #define BLYNK_TEMPLATE_ID "xxxxxxxxxxxxxxxxxx" #define BLYNK_DEVICE_NAME "xxxxxxxxxxxxx" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxxxxxxxxxxxxxxx" /* Comment this out to disable prints and save space */ #define BLYNK_PRINT Serial #include #include #include // monitor energie CT30 #include "EmonLib.h" // Include Emon Library EnergyMonitor emon1, emon2, emon3, emon4; // include watchdog library #include // You should get Auth Token in the Blynk App. char auth[] = BLYNK_AUTH_TOKEN; #define BB_DEBUG(msg) /* * Global definitions */ #define SOFTWARE_VERSION "V2.01" // versiune de software 19 Ianuarie 2023 #define DEVICE_STATUS "ACTIV" // mesajul activ sau stop pe display // include //#define BLYNK_GREEN "#23C48E" //#define BLYNK_BLUE "#04C0F8" //#define BLYNK_YELLOW "#ED9D00" //#define BLYNK_RED "#D3435C" //#define BLYNK_DARK_BLUE "#5F7CD8" // virtual pins definitions #define SW_VERSION V1 // setez mesajul de versiune soft #define TEST_ON_LED V2 // LED-ul de test comunicatie #define DV_STATUS V40 // mesajul de status // #define W5100_CS 10 // shield ethernet #define SDCARD_CS 4 // cardul SD din shield // // int ledtest = HIGH;// variabila de test pt led COMUNICATIE //V2 este setat widget Status LED din blynk mobile aplication WidgetLED led1(V2); // LED verde prezenta comunicatie on/off la 1 sec WidgetLED led2(V3); // LED rosu prezenta Mod CONFIG ACTIV // LED pt Grid si Modulator WidgetLED ledG1(V30); // LED rosu WidgetLED ledG2(V31); // LED rosu WidgetLED ledG3(V32); // LED rosu WidgetLED ledG4(V33); // LED rosu // WidgetLED ledM1(V34); // LED rosu WidgetLED ledM2(V35); // LED rosu WidgetLED ledM3(V36); // LED rosu WidgetLED ledM4(V37); // LED rosu // definitii pentru variabile float auto_config = HIGH; //variabila buton AUTO/CONFIG unde HIGH = AUTO float reset_priority = LOW; // variab pt buton de RESET float priority_1 = LOW; // variab pt buton de Priority 1 float priority_2 = LOW; // variab pt buton de Priority 2 float priority_3 = LOW; // variab pt buton de Priority 3 float priority_4 = LOW; // variab pt buton de Priority 4 // int priority_value_1 = 1; // variabila de prioritate 1 int priority_value_2 = 2; // variabila de prioritate 2 int priority_value_3 = 3; // variabila de prioritate 3 int priority_value_4 = 4; // variabila de prioritate 4 // variabile exitenta putere pe lini de control int flag_power_1 = 0; // variabila flag power 1 int flag_power_2 = 0; // variabila flag power 2 int flag_power_3 = 0; // variabila flag power 3 int flag_power_4 = 0; // variabila flag power 4 // variabile existenta armare pe relee int arm_1 = 0; // variabila flag releu 1 int arm_2 = 0; // variabila flag releu 2 int arm_3 = 0; // variabila flag releu 3 int arm_4 = 0; // variabila flag releu 4 // int power_trigger = 1; // variabila de triger activare flag putere linie // //KY019 relee de 5V - relay module cu 4x relee int relay1 = 14; // relay turns trigger signal on pin 14 - active high; int relay2 = 15; // relay turns trigger signal on pin 15 - active high; int relay3 = 16; // relay turns trigger signal on pin 16 - active high; int relay4 = 17; // relay turns trigger signal on pin 17 - active high; int relay5 = 18; // relay turns trigger signal on pin 18 - active high; int relay6 = 19; // relay turns trigger signal on pin 19 - active high; int relay7 = 20; // relay turns trigger signal on pin 20 - active high; int relay8 = 21; // relay turns trigger signal on pin 21 - active high; // float reset_flag =0; // flag pt butonul de reset // definitii pentru citire CT 100A float power_w1 = 0; // variabila de putere 1 float power_w2 = 0; // variabila de putere 2 float power_w3 = 0; // variabila de putere 3 float power_w4 = 0; // variabila de putere 4 // //===== SUBRUTINA============= BlynkTimer timer; // This function sends Arduino's up time every second // that you define how often to send data to Blynk App. void sendInfo() { // You can send any value at any time. // Please don't send more that 10 values per second. Blynk.virtualWrite(SW_VERSION, SOFTWARE_VERSION); // in V1 scrie versiune soft system pe ecran //------------------------------------------------------------------------------ //bucla Led on/off - vizualizare communicatie live // if the LED is if (ledtest==HIGH) { led1.on(); Serial.println("LED on V2-ON"); ledtest = LOW; } else { led1.off(); Serial.println("LED on V2-OFF"); ledtest = HIGH; } //============================================================================== //teste // //************************************************** // Calcule valori putere pe ecran // calcul putere electrica si afisare pe telefon double Irms1 = emon1.calcIrms(1480); // Calculate Irms only din A8 in setup Irms1 = Irms1*0.54; // calibrare :) power_w1= Irms1*240.0/1000; Blynk.virtualWrite(V4,power_w1); //scrie puterea pe telefon // if (power_w1 >= power_trigger) // puterea pe linia 1 mai mare de 3KW { flag_power_1 = 1; } else { flag_power_1 = 0; } // // calcul putere electrica si afisare pe telefon double Irms2 = emon2.calcIrms(1480); // Calculate Irms only din A9 in setup Irms2= Irms2*0.54; // calibrare :) power_w2= Irms2*240.0/1000; Blynk.virtualWrite(V5,power_w2); //scrie puterea pe telefon // if (power_w2 >= power_trigger) // puterea pe linia 2 mai mare de 3KW { flag_power_2 = 1; } else { flag_power_2 = 0; } // calcul putere electrica si afisare pe telefon double Irms3 = emon3.calcIrms(1480); // Calculate Irms only din A10 in setup Irms3= Irms3*1.32; // calibrare :) power_w3= Irms3*240.0/1000; Blynk.virtualWrite(V6,power_w3); //scrie puterea pe telefon // if (power_w3 >= power_trigger) // puterea pe linia 3 mai mare de 3KW { flag_power_3 = 1; } else { flag_power_3 = 0; } // calcul putere electrica si afisare pe telefon double Irms4 = emon4.calcIrms(1480); // Calculate Irms only din A11 in setup Irms4= Irms4*1.32; // calibrare :) power_w4= Irms4*240.0/1000; Blynk.virtualWrite(V7,power_w4); //scrie puterea pe telefon // if (power_w4 >= power_trigger) // puterea pe linia 4 mai mare de 3KW { flag_power_4 = 1; } else { flag_power_4 = 0; } // //============================================================================== // testez daca butonul AUTO e activ HIGH = GONFIG, iar LOW = AUTO if (auto_config==LOW) { goto testA; } else { // HIGH inseamna butonul e pe CONFIG goto testB; } testA: // validare buton AUTO activ led2.off(); // sting led-ul pe ecran ca este pe AUTO activ // reset_flag=0; //pun flagul de reset pe 0 Blynk.virtualWrite(V12, priority_value_1); //scrie valoarea de prio 1 pe ecran Blynk.virtualWrite(V13, priority_value_2); //scrie valoarea de prio 2 pe ecran Blynk.virtualWrite(V14, priority_value_3); //scrie valoarea de prio 3 pe ecran Blynk.virtualWrite(V15, priority_value_4); //scrie valoarea de prio 4 pe ecran // goto sfarsit; // du-te la sfarsit daca ai ajuns aici // testB: // validare buton CONFIG activ sau nu // led2.on(); // aprind led-ul pe ecran ca e activa config // if (reset_priority==HIGH) { reset_flag=0; //pun flagul de reset pe 0 Blynk.virtualWrite(V12, 0); //scrie valoarea de prio 1 pe ecran Blynk.virtualWrite(V13, 0); //scrie valoarea de prio 2 pe ecran Blynk.virtualWrite(V14, 0); //scrie valoarea de prio 3 pe ecran Blynk.virtualWrite(V15, 0); //scrie valoarea de prio 4 pe ecran } else { // } // // teste ce buton am apasat la prioritati if (priority_1 == HIGH) { reset_flag = reset_flag + 1; //incrementez valoarea priority_value_1 = reset_flag; //stochez val in memorie Blynk.virtualWrite(V12, priority_value_1); //scrie valoarea de prio 1 pe ecran } else { if (priority_2 == HIGH) { reset_flag = reset_flag + 1; //incrementez valoarea priority_value_2 = reset_flag; //stochez val in memorie Blynk.virtualWrite(V13, priority_value_2); //scrie valoarea de prio 2 pe ecran } else { if (priority_3 == HIGH) { reset_flag = reset_flag + 1; //incrementez valoarea priority_value_3 = reset_flag; //stochez val in memorie Blynk.virtualWrite(V14, priority_value_3); //scrie valoarea de prio 3 pe ecran } else { if (priority_4 == HIGH) { reset_flag = reset_flag + 1; //incrementez valoarea priority_value_4 = reset_flag; //stochez val in memorie Blynk.virtualWrite(V15, priority_value_4); //scrie valoarea de prio 4 pe ecran } else { goto sfarsit; } } } } /// gata cu testul de butoane sfarsit: // at the top of this infinite loop, reset the watchdog timer wdt_reset(); //================ // end subrutina sendInfo () } //**************************** //===== SUBRUTINA==RELEE=========== BlynkTimer timer5; /// se executa o data la 5 secunde ! void time_execute() { //======================= //======================= switch (priority_value_1) { case 1: //do something when var equals 1 if (flag_power_1 == 1) // verific daca am putere pe linie { //activez segventa de relee modulator digitalWrite (relay5, LOW); ///activez releu ledM1.on(); /// si sting grid activ digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, LOW); ///activez releu ledG1.off(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 1; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 // } else // daca n-am putere pe linie ma dezarmez { // activez segventa dezarmare de releu L1 grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // delay (500); //activez segventa de dezarmare releu modulator M1 digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // M-urile lucra pe dos // flaguri de armare arm_1 = 0; // variabila flag releu 1 // } break; //== case 2: //do something when var equals 2 /// daca sunt priorit 2 atunci altcineva e pri 1 si trebuie sa verific // daca e activ altcineva // if (flag_power_1 == 1) // verific daca am putere pe linie { if (arm_1 == 1) // verific daca e armat vreun releu cu pri 1 { // sigur e pri 1 si daca e prio 1 nu fac nimic // } else // daca nu e armat L1 { // nu fac nimic // } //** if (arm_2 == 1) // verific daca e armat L2 pe releu ce prior are? { //-------- if (priority_value_2 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // arm_2 = 0; } // ------- } else // daca nu e armat L2 { // nu fac nimic } //** if (arm_3 == 1) // verific daca e armat vreun releu cu pri 1 { //---------- if (priority_value_3 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // arm_3=0; } //---------- } else // daca nu e armat L3 { // nu fac nimic } //** if (arm_4 == 1) // verific daca e armat vreun releu cu pri 1 { //------------------------- if (priority_value_4 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // arm_4 = 0; } //------------------------- } else // daca L4 nu e armat ... incerc sa ma armez eu - cu pri 2 { // nu fac nimic } //==//==//******************************** // verific daca pot porni cu prioritatea 2 if (arm_1 == 0) { if ( arm_2 == 0) { if (arm_3 == 0) { if (arm_4 == 0) { //activez segventa de relee modulator digitalWrite (relay5, LOW); ///activez releu ledM1.on(); /// si sting grid activ digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, LOW); ///activez releu ledG1.off(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 1; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } // } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // grid activ delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// opresc modulator // flaguri de armare arm_1 = 0; // variabila flag releu 1 // } break; //== case 3: //do something when var equals 3 /// daca sunt priorit 3 atunci altcineva e pri 1 si pri 2 si trebuie sa verific // cine e si daca e activ altcineva altfel dezarmez if ( flag_power_1 == 1 ) // verific daca am putere pe linie { if (arm_1 == 1) // verific daca e armat vreun releu cu pri 1 sau 2 { // sigur e pri 1 sau 2 si daca e prio 1 sau 2 nu fac nimic // } else // daca nu e armat L1 { // } //** if (arm_2 == 1) // verific daca e armat L2 pe releu ce prior are? { //-------- if (priority_value_2 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci poate e prio 2 ? { if (priority_value_2 == 2) // oare e prioritate doi ? { //daca da nu fac nimic } else /// atunci sigur e 4 si trebuie dezactivata { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // } } // ------- } else // daca nu e armat L2 { // nu fac nimic } //** if (arm_3 == 1) // verific daca e armat vreun releu cu pri 1 { //---------- if (priority_value_3 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // oare este prio 2 ? { if (priority_value_3 == 2) // verific daca e prioritate 2 ? { // nu fac nimic } else // atunci este cu siguranta prio 4 si dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // } } //---------- } else // daca nu e armat L3 { // } //** if (arm_4 == 1) // verific daca e armat L4 cu pri 1 sau 2 { //------------------------- if (priority_value_4 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // atunci e prio 2 ? { if (priority_value_4 == 2) // verific daca e prioritate 2 ? { // daca e pri 2 nu fac nimic } else // atunci sigur e pri 4 si tre sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay8, HIGH); ///deactivez releu ledM4.on(); // } } //------------------------- } else // daca nu e armat L4 ... ma armez eu - cu pri 3 { // nu mai fac nimic } //==//==//******************************** // verific daca pot porni cu prioritatea 3 if (arm_1 == 0) { if ( arm_2 == 0) { if (arm_3 == 0) { if (arm_4 == 0) { //activez segventa de relee modulator digitalWrite (relay5, LOW); ///activez releu ledM1.on(); /// si sting grid activ digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, LOW); ///activez releu ledG1.off(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 1; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); /// delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// // flaguri de armare arm_1 = 0; // variabila flag releu 1 // } break; //== case 4: // do something when var equals 4 // daca sunt priorit 4 atunci altcineva e pri 1, 2, 3 si trebuie sa verific // daca e activ altcineva e mai tare ca mine if ( flag_power_1 == 1 ) // verific daca am putere pe linie { if (arm_1 == 1) // verific daca e armat L1 cu pri 1, 2 sau 3 { // sigur e pri 1,2,3 si nu fac nimic // } else // daca nu e armat L1 { if (arm_2 == 1) // verific daca e armat L2 pe releu ? { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L2 { if (arm_3 == 1) // verific daca e armat L3 { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L3 { if (arm_4 == 1) // verific daca e armat L4 { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L4 ... ma armez eu - cu pri 4 { //activez segventa de relee modulator digitalWrite (relay5, LOW); ///activez releu ledM1.on(); /// si sting grid activ digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, LOW); ///activez releu ledG1.off(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 1; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // //activez segventa de relee modulator delay (500); digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 // } break; default: // if nothing else matches, do the default // default is optional // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 // break; } //******************************************* //******************************************* //******************************************* //======================= switch (priority_value_2) { case 1: //do something when var equals 1 if (flag_power_2 == 1) // verific daca am putere pe linie { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// si sting grid activ digitalWrite (relay6, LOW); ///activez releu ledM2.on(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///activez releu ledG1.on(); // digitalWrite (relay2, LOW); ///deactivez releu ledG2.off(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 1; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 // } else // daca n-am putere pe linie ma dezarmez { // activez segventa dezarmare de releu L1 grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // delay (500); //activez segventa de dezarmare releu modulator M1 digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // M-urile lucra pe dos // flaguri de armare arm_2 = 0; // variabila flag releu 1 // } break; //== case 2: //do something when var equals 2 /// daca sunt priorit 2 atunci altcineva e pri 1 si trebuie sa verific // daca e activ altcineva // if (flag_power_2 == 1) // verific daca am putere pe linie { if (arm_2 == 1) // verific daca e armat vreun releu cu pri 1 { // sigur e pri 1 si daca e prio 1 nu fac nimic // } else // daca nu e armat L2 { // nu fac nimic // } //** if (arm_1 == 1) // verific daca e armat L1 pe releu ce prior are? { //-------- if (priority_value_1 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // arm_1 = 0; } // ------- } else // daca nu e armat L2 { // nu fac nimic } //** if (arm_3 == 1) // verific daca e armat vreun releu cu pri 1 { //---------- if (priority_value_3 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // arm_3=0; } //---------- } else // daca nu e armat L3 { // nu fac nimic } //** if (arm_4 == 1) // verific daca e armat vreun releu cu pri 1 { //------------------------- if (priority_value_4 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // arm_4 = 0; } //------------------------- } else // daca L4 nu e armat ... incerc sa ma armez eu - cu pri 2 { // nu fac nimic } //==//==//******************************** // verific daca pot porni cu prioritatea 2 if (arm_2 == 0) { if ( arm_1 == 0) { if (arm_3 == 0) { if (arm_4 == 0) { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// digitalWrite (relay6, LOW); ///activez releu ledM2.on(); //si sting grid activ digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // digitalWrite (relay2, LOW); ///activez releu ledG2.off(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 1; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } // } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // grid activ delay (500); //activez segventa de relee modulator digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); /// opresc modulator // flaguri de armare arm_2 = 0; // variabila flag releu 1 // } break; //== case 3: //do something when var equals 3 /// daca sunt priorit 3 atunci altcineva e pri 1 si pri 2 si trebuie sa verific // cine e si daca e activ altcineva altfel dezarmez if ( flag_power_2 == 1 ) // verific daca am putere pe linie { if (arm_2 == 1) // verific daca e armat vreun releu cu pri 1 sau 2 { // sigur e pri 1 sau 2 si daca e prio 1 sau 2 nu fac nimic // } else // daca nu e armat L1 { // } //** if (arm_1 == 1) // verific daca e armat L1 pe releu ce prior are? { //-------- if (priority_value_1 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci poate e prio 2 ? { if (priority_value_1 == 2) // oare e prioritate doi ? { //daca da nu fac nimic } else /// atunci sigur e 4 si trebuie dezactivata { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // } } // ------- } else // daca nu e armat L1 { // nu fac nimic } //** if (arm_3 == 1) // verific daca e armat vreun releu cu pri 1 { //---------- if (priority_value_3 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // oare este prio 2 ? { if (priority_value_3 == 2) // verific daca e prioritate 2 ? { // nu fac nimic } else // atunci este cu siguranta prio 4 si dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // } } //---------- } else // daca nu e armat L3 { // } //** if (arm_4 == 1) // verific daca e armat L4 cu pri 1 sau 2 { //------------------------- if (priority_value_4 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // atunci e prio 2 ? { if (priority_value_4 == 2) // verific daca e prioritate 2 ? { // daca e pri 2 nu fac nimic } else // atunci sigur e pri 4 si tre sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay8, HIGH); ///deactivez releu ledM4.on(); // } } //------------------------- } else // daca nu e armat L4 ... ma armez eu - cu pri 3 { // nu mai fac nimic } //==//==//******************************** // verific daca pot porni cu prioritatea 3 if (arm_2 == 0) { if ( arm_1 == 0) { if (arm_3 == 0) { if (arm_4 == 0) { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// digitalWrite (relay6, LOW); ///activez releu ledM2.on(); //si sting grid activ digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///activez releu ledG1.on(); // digitalWrite (relay2, LOW); ///activez releu ledG2.off(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 1; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); /// delay (500); //activez segventa de relee modulator digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); /// // flaguri de armare arm_2 = 0; // variabila flag releu 2 // } break; //== case 4: // do something when var equals 4 // daca sunt priorit 4 atunci altcineva e pri 1, 2, 3 si trebuie sa verific // daca e activ altcineva e mai tare ca mine if ( flag_power_2 == 1 ) // verific daca am putere pe linie { if (arm_2 == 1) // verific daca e armat L2 cu pri 1, 2 sau 3 { // sigur e pri 1,2,3 si nu fac nimic // } else // daca nu e armat L1 { if (arm_1 == 1) // verific daca e armat L1 pe releu ? { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L2 { if (arm_3 == 1) // verific daca e armat L3 { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L3 { if (arm_4 == 1) // verific daca e armat L4 { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L4 ... ma armez eu - cu pri 4 { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// si sting grid activ digitalWrite (relay6, LOW); ///activez releu ledM2.on(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///activez releu ledG1.on(); // digitalWrite (relay2, LOW); ///activez releu ledG2.off(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 1; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // //activez segventa de relee modulator delay (500); digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // // flaguri de armare arm_2 = 0; // variabila flag releu 2 // } break; default: // if nothing else matches, do the default // default is optional // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 // break; } //******************************************* //******************************************* //******************************************* //======================= switch (priority_value_3) { case 1: //do something when var equals 1 if (flag_power_3 == 1) // verific daca am putere pe linie { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// si sting grid activ digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, LOW); ///activez releu ledM3.on(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///activez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///activez releu ledG2.on(); // digitalWrite (relay3, LOW); ///activez releu ledG3.off(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 1; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 // } else // daca n-am putere pe linie ma dezarmez { // activez segventa dezarmare de releu L1 grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // delay (500); //activez segventa de dezarmare releu modulator M1 digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // M-urile lucra pe dos // flaguri de armare arm_3 = 0; // variabila flag releu 1 // } break; //== case 2: //do something when var equals 2 /// daca sunt priorit 2 atunci altcineva e pri 1 si trebuie sa verific // daca e activ altcineva // if (flag_power_3 == 1) // verific daca am putere pe linie { if (arm_3 == 1) // verific daca e armat vreun releu cu pri 1 { // sigur e pri 1 si daca e prio 1 nu fac nimic // } else // daca nu e armat L3 { // nu fac nimic // } //** if (arm_1 == 1) // verific daca e armat L1 pe releu ce prior are? { //-------- if (priority_value_1 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // arm_1 = 0; } // ------- } else // daca nu e armat L1 { // nu fac nimic } //** if (arm_2 == 1) // verific daca e armat vreun releu cu pri 1 { //---------- if (priority_value_2 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // arm_2=0; } //---------- } else // daca nu e armat L2 { // nu fac nimic } //** if (arm_4 == 1) // verific daca e armat vreun releu cu pri 1 { //------------------------- if (priority_value_4 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // arm_4 = 0; } //------------------------- } else // daca L4 nu e armat ... incerc sa ma armez eu - cu pri 2 { // nu fac nimic } //==//==//******************************** // verific daca pot porni cu prioritatea 2 if (arm_2 == 0) { if ( arm_1 == 0) { if (arm_3 == 0) { if (arm_4 == 0) { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); //si sting grid activ digitalWrite (relay7, LOW); ///activez releu ledM3.on(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, LOW); ///activez releu ledG3.off(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 1; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } // } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // grid activ delay (500); //activez segventa de relee modulator digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); /// opresc modulator // flaguri de armare arm_3 = 0; // variabila flag releu 1 // } break; //== case 3: //do something when var equals 3 /// daca sunt priorit 3 atunci altcineva e pri 1 si pri 2 si trebuie sa verific // cine e si daca e activ altcineva altfel dezarmez if ( flag_power_3 == 1 ) // verific daca am putere pe linie { if (arm_3 == 1) // verific daca e armat vreun releu cu pri 1 sau 2 { // sigur e pri 1 sau 2 si daca e prio 1 sau 2 nu fac nimic // } else // daca nu e armat L3 { // } //** if (arm_1 == 1) // verific daca e armat L1 pe releu ce prior are? { //-------- if (priority_value_1 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci poate e prio 2 ? { if (priority_value_1 == 2) // oare e prioritate doi ? { //daca da nu fac nimic } else /// atunci sigur e 4 si trebuie dezactivata { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // } } // ------- } else // daca nu e armat L1 { // nu fac nimic } //** if (arm_2 == 1) // verific daca e armat vreun releu cu pri 1 { //---------- if (priority_value_2 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // oare este prio 2 ? { if (priority_value_2 == 2) // verific daca e prioritate 2 ? { // nu fac nimic } else // atunci este cu siguranta prio 4 si dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // } } //---------- } else // daca nu e armat L3 { // } //** if (arm_4 == 1) // verific daca e armat L4 cu pri 1 sau 2 { //------------------------- if (priority_value_4 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // atunci e prio 2 ? { if (priority_value_4 == 2) // verific daca e prioritate 2 ? { // daca e pri 2 nu fac nimic } else // atunci sigur e pri 4 si tre sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay8, HIGH); ///deactivez releu ledM4.on(); // } } //------------------------- } else // daca nu e armat L4 ... ma armez eu - cu pri 3 { // nu mai fac nimic } //==//==//******************************** // verific daca pot porni cu prioritatea 3 if (arm_3 == 0) { if ( arm_2 == 0) { if (arm_1 == 0) { if (arm_4 == 0) { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// digitalWrite (relay6, HIGH); ///activez releu ledM2.off(); //si sting grid activ digitalWrite (relay7, LOW); ///activez releu ledM3.on(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///activez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, LOW); ///activez releu ledG3.off(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 1; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); /// delay (500); //activez segventa de relee modulator digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); /// // flaguri de armare arm_3 = 0; // variabila flag releu 3 // } break; //== case 4: // do something when var equals 4 // daca sunt priorit 4 atunci altcineva e pri 1, 2, 3 si trebuie sa verific // daca e activ altcineva e mai tare ca mine if ( flag_power_3 == 1 ) // verific daca am putere pe linie { if (arm_3 == 1) // verific daca e armat L3 cu pri 1, 2 sau 3 { // sigur e pri 1,2,3 si nu fac nimic // } else // daca nu e armat L1 { if (arm_1 == 1) // verific daca e armat L1 pe releu ? { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L2 { if (arm_2 == 1) // verific daca e armat L2 { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L2 { if (arm_4 == 1) // verific daca e armat L4 { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L4 ... ma armez eu - cu pri 4 { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// si sting grid activ digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, LOW); ///activez releu ledM3.on(); // digitalWrite (relay8, HIGH); ///deactivez ledM4.off(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///activez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, LOW); ///activez releu ledG3.off(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 1; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 } } } } } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // //activez segventa de relee modulator delay (500); digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // // flaguri de armare arm_3 = 0; // variabila flag releu 3 // } break; default: // if nothing else matches, do the default // default is optional // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 // break; } //******************************************* //******************************************* //******************************************* //******************************************* //******************************************* //******************************************* //======================= switch (priority_value_4) { case 1: //do something when var equals 1 if (flag_power_4 == 1) // verific daca am putere pe linie { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// si sting grid activ digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///activez releu ledM3.off(); // digitalWrite (relay8, LOW); ///deactivez ledM4.on(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///activez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///activez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, LOW); ///activez releu ledG4.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 1; // variabila flag releu 4 // } else // daca n-am putere pe linie ma dezarmez { // activez segventa dezarmare de releu L1 grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de dezarmare releu modulator M1 digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // M-urile lucra pe dos // flaguri de armare arm_4 = 0; // variabila flag releu 4 // } break; //== case 2: //do something when var equals 2 /// daca sunt priorit 2 atunci altcineva e pri 1 si trebuie sa verific // daca e activ altcineva // if (flag_power_4 == 1) // verific daca am putere pe linie { if (arm_4 == 1) // verific daca e armat vreun releu cu pri 1 { // sigur e pri 1 si daca e prio 1 nu fac nimic // } else // daca nu e armat L4 { // nu fac nimic // } //** if (arm_1 == 1) // verific daca e armat L1 pe releu ce prior are? { //-------- if (priority_value_1 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // arm_1 = 0; } // ------- } else // daca nu e armat L1 { // nu fac nimic } //** if (arm_2 == 1) // verific daca e armat vreun releu cu pri 1 { //---------- if (priority_value_2 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // arm_2=0; } //---------- } else // daca nu e armat L2 { // nu fac nimic } //** if (arm_3 == 1) // verific daca e armat vreun releu cu pri 1 { //------------------------- if (priority_value_3 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci e 3 sau 4 si trebuie sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // arm_4 = 0; } //------------------------- } else // daca L3 nu e armat ... incerc sa ma armez eu - cu pri 2 { // nu fac nimic } //==//==//******************************** // verific daca pot porni cu prioritatea 2 if (arm_3 == 0) { if ( arm_2 == 0) { if (arm_1 == 0) { if (arm_4 == 0) { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); //si sting grid activ digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, LOW); ///activez ledM4.on(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, LOW); ///activez releu ledG4.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 1; // variabila flag releu 4 } } } } // } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // grid activ delay (500); //activez segventa de relee modulator digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); /// opresc modulator // flaguri de armare arm_4 = 0; // variabila flag releu 4 // } break; //== case 3: //do something when var equals 3 /// daca sunt priorit 3 atunci altcineva e pri 1 si pri 2 si trebuie sa verific // cine e si daca e activ altcineva altfel dezarmez if ( flag_power_4 == 1 ) // verific daca am putere pe linie { if (arm_4 == 1) // verific daca e armat vreun releu cu pri 1 sau 2 { // sigur e pri 1 sau 2 si daca e prio 1 sau 2 nu fac nimic // } else // daca nu e armat L4 { // } //** if (arm_1 == 1) // verific daca e armat L1 pe releu ce prior are? { //-------- if (priority_value_1 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // daca nu e 1 atunci poate e prio 2 ? { if (priority_value_1 == 2) // oare e prioritate doi ? { //daca da nu fac nimic } else /// atunci sigur e 4 si trebuie dezactivata { // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // } } // ------- } else // daca nu e armat L1 { // nu fac nimic } //** if (arm_2 == 1) // verific daca e armat vreun releu cu pri 1 { //---------- if (priority_value_2 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // oare este prio 2 ? { if (priority_value_2 == 2) // verific daca e prioritate 2 ? { // nu fac nimic } else // atunci este cu siguranta prio 4 si dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // } } //---------- } else // daca nu e armat L2 { // } //** if (arm_3 == 1) // verific daca e armat L4 cu pri 1 sau 2 { //------------------------- if (priority_value_3 == 1) // oare e prioritate unu ? { // daca da nu fac nimic } else // atunci e prio 2 ? { if (priority_value_3 == 2) // verific daca e prioritate 2 ? { // daca e pri 2 nu fac nimic } else // atunci sigur e pri 4 si tre sa dezactivez { // activez segventa dezarmare de relee grid digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay7, HIGH); ///deactivez releu ledM3.on(); // } } //------------------------- } else // daca nu e armat L3 ... ma armez eu - cu pri 3 { // nu mai fac nimic } //==//==//******************************** // verific daca pot porni cu prioritatea 3 if (arm_4 == 0) { if ( arm_3 == 0) { if (arm_2 == 0) { if (arm_1 == 0) { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); //si sting grid activ digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, LOW); ///activez ledM4.on(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, LOW); ///activez releu ledG4.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 1; // variabila flag releu 4 } } } } } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); /// delay (500); //activez segventa de relee modulator digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); /// // flaguri de armare arm_4 = 0; // variabila flag releu 3 // } break; //== case 4: // do something when var equals 4 // daca sunt priorit 4 atunci altcineva e pri 1, 2, 3 si trebuie sa verific // daca e activ altcineva e mai tare ca mine if ( flag_power_4 == 1 ) // verific daca am putere pe linie { if (arm_4 == 1) // verific daca e armat L4 cu pri 1, 2 sau 3 { // sigur e pri 1,2,3 si nu fac nimic // } else // daca nu e armat L4 { if (arm_1 == 1) // verific daca e armat L1 pe releu ? { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L1 { if (arm_2 == 1) // verific daca e armat L2 { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L2 { if (arm_3 == 1) // verific daca e armat L3 { // nu fac nimic ca e mai tare ca mine } else // daca nu e armat L3 ... ma armez eu - cu pri 4 { //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); /// si sting grid activ digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, LOW); ///activez ledM4.on(); // delay (500); // activez segventa de relee grid digitalWrite (relay1, HIGH); ///activez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, LOW); ///activez releu ledG4.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 1; // variabila flag releu 4 } } } } } else // daca n-am putere pe linie { // activez segventa dezarmare de relee grid digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // //activez segventa de relee modulator delay (500); digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // // flaguri de armare arm_4 = 0; // variabila flag releu 4 // } break; default: // if nothing else matches, do the default // default is optional // activez segventa dezarmare de relee grid digitalWrite (relay1, HIGH); ///deactivez releu ledG1.on(); // digitalWrite (relay2, HIGH); ///deactivez releu ledG2.on(); // digitalWrite (relay3, HIGH); ///deactivez releu ledG3.on(); // digitalWrite (relay4, HIGH); ///deactivez releu ledG4.on(); // delay (500); //activez segventa de relee modulator digitalWrite (relay5, HIGH); ///deactivez releu ledM1.off(); // digitalWrite (relay6, HIGH); ///deactivez releu ledM2.off(); // digitalWrite (relay7, HIGH); ///deactivez releu ledM3.off(); // digitalWrite (relay8, HIGH); ///deactivez releu ledM4.off(); // // flaguri de armare arm_1 = 0; // variabila flag releu 1 arm_2 = 0; // variabila flag releu 2 arm_3 = 0; // variabila flag releu 3 arm_4 = 0; // variabila flag releu 4 // break; } //******************************************* //******************************************* //******************************************* // teste si afisare // end subrutina time_execute () } //================= //****************** //===== SUBRUTINA============= BlynkTimer timer05; /// se executa o data la 0,5 secunde ! void time_scurt() { // end subrutina time_scurt () } //================= //****************** //== SETUP======== void setup() { // put your setup code here, to run once: // Debug console Serial.begin(9600); //watchdog timer with 4 Seconds time out wdt_enable(WDTO_8S); //***************** //***************** pinMode(SDCARD_CS, OUTPUT); digitalWrite(SDCARD_CS, HIGH); // Deselect the SD card Blynk.begin(auth); // You can also specify server: //Blynk.begin(auth, "blynk-cloud.com", 80); //Blynk.begin(auth, IPAddress(192,168,1,100), 8080); // Setup a function to be called "sensSensor" every 1 second timer.setInterval(1500L, sendInfo); // subrutina timer se executa 1,5 sec subrutina sendInfo // setup a function called "time_execute" at every 5 sec timer5.setInterval(5000L,time_execute); // // setup a function called "time_execute" at every 0,5 sec timer05.setInterval(500L,time_scurt); // // ... pinMode (53, OUTPUT); // setez pin 53 OUT pt LED albastru la butonul de apasare test pinMode (relay1, OUTPUT); // Defineste port atribut releu ON output; pinMode (relay2, OUTPUT); // Defineste port atribut releu ON output; pinMode (relay3, OUTPUT); // Defineste port atribut releu ON output; pinMode (relay4, OUTPUT); // Defineste port atribut releu ON output; pinMode (relay5, OUTPUT); // Defineste port atribut releu ON output; pinMode (relay6, OUTPUT); // Defineste port atribut releu ON output; pinMode (relay7, OUTPUT); // Defineste port atribut releu ON output; pinMode (relay8, OUTPUT); // Defineste port atribut releu ON output; // digitalWrite (relay1, HIGH); ///deactivez releu digitalWrite (relay2, HIGH); ///deactivez releu digitalWrite (relay3, HIGH); ///deactivez releu digitalWrite (relay4, HIGH); ///deactivez releu digitalWrite (relay5, HIGH); ///deactivez releu digitalWrite (relay6, HIGH); ///deactivez releu digitalWrite (relay7, HIGH); ///deactivez releu digitalWrite (relay8, HIGH); ///deactivez releu // pt test ..nu uita sa dezactivezi //digitalWrite (relay1, LOW); ///deactivez releu //digitalWrite (relay2, LOW); ///deactivez releu //digitalWrite (relay3, LOW); ///deactivez releu //digitalWrite (relay4, LOW); ///deactivez releu // ledG1.on(); /// grid activ ledG2.on();/// grid activ ledG3.on();/// grid activ ledG4.on();/// grid activ // ledM1.off();/// modulator off ledM2.off();/// modulator off ledM3.off();/// modulator off ledM4.off();/// modulator off /// ... emon1.current(8, 111.1); // Current: input pin A8, calibration - senzor energie emon2.current(9, 111.1); // Current: input pin A9, calibration - senzor energie emon3.current(10, 111.1); // Current: input pin A10, calibration - senzor energie emon4.current(11, 111.1); // Current: input pin A11, calibration - senzor energie //... } //====end void setup===== // // asta este o subrutina de citire buton de test counicatie BLYNK_WRITE(V0) { // Buton TEST Com - V0 este starea de buton apasat pe ecran aplicatie int buttonState = param.asInt(); // definim variabila asa cum e setata digitalWrite(53, buttonState); // pt led albastru //Serial.println("Butonul este = "); //Serial.print(buttonState); //Serial.println(); } BLYNK_WRITE(V10) { // Auto-Config int buttonStateAUTO = param.asInt(); //citesc valoarea in variabila V10 auto_config = buttonStateAUTO; } BLYNK_WRITE(V11) { // reset_priority int buttonStateRESET = param.asInt(); //citesc valoarea in variabila V11 reset_priority = buttonStateRESET; } BLYNK_WRITE(V20) { // subrutina Priority 1 float buttonStatePRI1 = param.asFloat(); //citesc valoarea in variabila V20 priority_1 = buttonStatePRI1; } BLYNK_WRITE(V21) { // Priority 2 int buttonStatePRI2 = param.asInt(); //citesc valoarea in variabila V21 priority_2 = buttonStatePRI2; } BLYNK_WRITE(V22) { // Priority 3 int buttonStatePRI3 = param.asInt(); //citesc valoarea in variabila V22 priority_3 = buttonStatePRI3; } BLYNK_WRITE(V23) { // Priority 4 int buttonStatePRI4 = param.asInt(); //citesc valoarea in variabila V23 priority_4 = buttonStatePRI4; } // This function will run every time Blynk connection is established BLYNK_CONNECTED() { // Request Blynk server to re-send latest values for all pins Blynk.syncAll(); // You can also update individual virtual pins like this: // Blynk.syncVirtual(V0, V30); // Let's write your hardware uptime to Virtual Pin 30 // int value = millis() / 1000; // Blynk.virtualWrite(V30, value); // digitalWrite (relayOFF, HIGH); // deactivez releu pt OPRIRE GEN // digitalWrite (relayON, HIGH); // deactivez releu pt PORNIRE GEN } //================ void loop() { // put your main code here, to run repeatedly: Blynk.run(); timer.run(); timer5.run(); timer05.run(); // }