arkadiusz binder 5 yıl önce
ebeveyn
işleme
9af5226d1a

+ 11 - 23
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/P5_automation_arduino_status_submodule.ino

@@ -33,25 +33,9 @@ U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0);
 #include "___main/__main_struct_status_func.h"
 
 
-
+#include "___CONFIG/config_status.h"
 int test_pwm_pin = 9;
 
-STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_1 = A0 ;
-    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_1_RANGE_A = { 0 , 2000 } ;
-STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_2 = A1 ;
-    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_2_RANGE_A = { 335 , 2000 } ;
-STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_3 = A2 ;
-    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_3_RANGE_A = { 335 , 2000 } ;
-STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_4 = A3 ;
-    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_4_RANGE_A = { 0 , 2000 } ;
-
-
-STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_T out_test_status_p5_bus_1_port_6_red_led_pin = 5 ;
-STATUS_PHYS_PIN_INPUT_INT_T  in_test_status_p5_bus_1_port_7_red_buttopn_pin = 6 ;
-STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_T out_test_status_p5_bus_1_port_8_green_led_pin = 7 ;
-STATUS_PHYS_PIN_INPUT_INT_T  in_test_status_p5_bus_1_port_9_black_buttopn_pin = 8 ;
-
-
 //#define HAS_task
 
 #if defined(HAS_task)
@@ -110,7 +94,7 @@ STATUS_PHYS_PIN_INPUT_INT_T  in_test_status_p5_bus_1_port_9_black_buttopn_pin =
 
 //#include "scan_ports.c"
 
-void status_pin(int pin) {
+void status_pin(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_T pin) {
     int state = digitalRead(pin );
            if(state == HIGH) {
               // Good
@@ -172,17 +156,21 @@ void loop(void) {
         u8g2.setCursor(0,20);
        //  u8g2.setFont(u8g2_font_m2icon_5_tf);  // choose a suitable font
       #endif
-    status_analog_pin(in_test_status_p5_temp_1, in_test_status_p5_temp_1_RANGE_A,  STATUS_SYSTEM_CONDITION_A);
-    status_analog_pin(in_test_status_p5_temp_2, in_test_status_p5_temp_2_RANGE_A,  STATUS_SYSTEM_CONDITION_A);
+    STATUS_PHYS_PIN_INPUT_RANGE_F(in_test_status_p5_temp_1, in_test_status_p5_temp_1_RANGE_A,  STATUS_SYSTEM_CONDITION_ERROR_COUNT_A);
+    STATUS_PHYS_PIN_INPUT_RANGE_F(in_test_status_p5_temp_2, in_test_status_p5_temp_2_RANGE_A,  STATUS_SYSTEM_CONDITION_ERROR_COUNT_A);
       #if defined(HAS_u8g2)
         u8g2.setCursor(0,30);
        #endif
-    status_analog_pin(in_test_status_p5_temp_3,  in_test_status_p5_temp_3_RANGE_A,  STATUS_SYSTEM_CONDITION_A);
-    status_analog_pin(in_test_status_p5_temp_4,  in_test_status_p5_temp_4_RANGE_A,  STATUS_SYSTEM_CONDITION_A);
+    STATUS_PHYS_PIN_INPUT_RANGE_F(in_test_status_p5_temp_3,  in_test_status_p5_temp_3_RANGE_A,  STATUS_SYSTEM_CONDITION_ERROR_COUNT_A);
+    STATUS_PHYS_PIN_INPUT_RANGE_F(in_test_status_p5_temp_4,  in_test_status_p5_temp_4_RANGE_A,  STATUS_SYSTEM_CONDITION_ERROR_COUNT_A);
 
+    STATUS_SYSTEM_CONDITION_F(STATUS_SYSTEM_CONDITION_A, STATUS_SYSTEM_CONDITION_ERROR_COUNT_A);
+    STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_F(STATUS_SYSTEM_CONDITION_A, out_test_status_p5_bus_1_port_8_green_led_pin );
+    STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_F(STATUS_SYSTEM_CONDITION_A, out_test_status_p5_bus_1_port_6_red_led_pin );
        #if defined(HAS_u8g2)
         u8g2.setCursor(0,40);
-          u8g2.print(STATUS_SYSTEM_CONDITION_A);
+        //String STATUS_SYSTEM_CONDITION_A_S  ;
+          u8g2.print(String(STATUS_SYSTEM_CONDITION_A));
           u8g2.sendBuffer(); 
        #endif
 }

+ 19 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/___CONFIG/config_status.h

@@ -0,0 +1,19 @@
+
+
+
+STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_1 = A0 ;
+    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_1_RANGE_A = { 0 , 2000 } ;
+STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_2 = A1 ;
+    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_2_RANGE_A = { 335 , 2000 } ;
+STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_3 = A2 ;
+    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_3_RANGE_A = { 335 , 2000 } ;
+STATUS_PHYS_PIN_INPUT_T in_test_status_p5_temp_4 = A3 ;
+    STATUS_PHYS_PIN_INPUT_RANGE_T in_test_status_p5_temp_4_RANGE_A = { 0 , 2000 } ;
+
+STATUS_PHYS_PIN_OUTPUT_INT_T out_test_status_p5_bus_1_port_2_i2c_5v_int_err_pin = 3 ; 
+STATUS_PHYS_PIN_OUTPUT_INT_T out_test_status_p5_bus_1_port_4_i2c_3v_int_err_pin = 4 ; 
+STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_T out_test_status_p5_bus_1_port_6_red_led_pin = 5 ;
+STATUS_PHYS_PIN_INPUT_INT_ERROR_T  in_test_status_p5_bus_1_port_7_red_buttopn_pin = 6 ;
+STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_T out_test_status_p5_bus_1_port_8_green_led_pin = 7 ;
+STATUS_PHYS_PIN_INPUT_INT_OK_T  in_test_status_p5_bus_1_port_9_black_buttopn_pin = 8 ;
+

+ 2 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/___main/__main_struct_init.h

@@ -1,3 +1,4 @@
 
 
-STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_INIT_A ;
+STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_INIT_A ;
+STATUS_SYSTEM_CONDITION_ERROR_COUNT_T STATUS_SYSTEM_CONDITION_ERROR_COUNT_A = STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A ;

+ 11 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/___main/__main_struct_status.h

@@ -6,18 +6,27 @@ const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_UNKNOWN_A = B00000010 ;
 const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_ERROR_A   = B00000100 ; 
 const STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_OK_A      = B00001000 ; 
 
-
+typedef int STATUS_SYSTEM_CONDITION_ERROR_COUNT_T;  //status of system 
+const STATUS_SYSTEM_CONDITION_ERROR_COUNT_T STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A = 0 ;
 
 typedef int  STATUS_PHYS_PIN_T;  //physical pin used to measure or controll etc
 
 typedef  STATUS_PHYS_PIN_T STATUS_PHYS_PIN_INPUT_T ; //
 
 typedef  STATUS_PHYS_PIN_INPUT_T STATUS_PHYS_PIN_INPUT_INT_T ; // type for input interrupt - like switches / rottary
+typedef  STATUS_PHYS_PIN_INPUT_INT_T STATUS_PHYS_PIN_INPUT_INT_ERROR_T ; // IMMEDIATE ERROR
+typedef  STATUS_PHYS_PIN_INPUT_INT_T STATUS_PHYS_PIN_INPUT_INT_OK_T ; // IMMEDIATE OK
+
 typedef  STATUS_PHYS_PIN_INPUT_T STATUS_PHYS_PIN_INPUT_ANALOG_T ; //type for analog input
 
 
 
 typedef  STATUS_PHYS_PIN_T STATUS_PHYS_PIN_OUTPUT_T ; //
+
+typedef  STATUS_PHYS_PIN_OUTPUT_T STATUS_PHYS_PIN_OUTPUT_INT_T ; //int outputs on ex i2c
+typedef  STATUS_PHYS_PIN_OUTPUT_INT_T STATUS_PHYS_PIN_OUTPUT_INT_ERROR_T ; //int outputs on ex i2c
+
+
 typedef  STATUS_PHYS_PIN_OUTPUT_T STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_T  ; //for output system status
 typedef  STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_T STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_T ; //type for confirm everything is OK
 typedef  STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_T STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_T ; //type for ERROR report
@@ -32,6 +41,7 @@ typedef STATUS_PHYS_PIN_INPUT_VALUE_T STATUS_PHYS_PIN_INPUT_VALUE_MAX_T ; //defi
 struct STATUS_PHYS_PIN_INPUT_RANGE_S { //for define range
     STATUS_PHYS_PIN_INPUT_VALUE_MIN_T STATUS_PHYS_PIN_INPUT_VALUE_MIN_A;
     STATUS_PHYS_PIN_INPUT_VALUE_MAX_T STATUS_PHYS_PIN_INPUT_VALUE_MAX_A;
+    STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_A; //for controll changes
 } ;
 
 typedef STATUS_PHYS_PIN_INPUT_RANGE_S STATUS_PHYS_PIN_INPUT_RANGE_T ;

+ 47 - 5
SE/stuff/P5_Automation_can-dev-res-working-1930/___SUBMODULES___/P5_automation_arduino_status_submodule/___main/__main_struct_status_func.h

@@ -1,7 +1,7 @@
 
-void status_analog_pin(STATUS_PHYS_PIN_INPUT_ANALOG_T pin,
+void STATUS_PHYS_PIN_INPUT_RANGE_F(STATUS_PHYS_PIN_INPUT_ANALOG_T pin,
  STATUS_PHYS_PIN_INPUT_RANGE_T STATUS_PHYS_PIN_INPUT_RANGE_A,
- STATUS_SYSTEM_CONDITION_T &STATUS_SYSTEM_CONDITION_A) {
+ STATUS_SYSTEM_CONDITION_ERROR_COUNT_T &STATUS_SYSTEM_CONDITION_ERROR_COUNT_A) {
   //  int level = round(analogRead(pin ) / 10);
         int level =analogRead(pin );
 
@@ -10,14 +10,16 @@ void status_analog_pin(STATUS_PHYS_PIN_INPUT_ANALOG_T pin,
           #if defined(HAS_u8g2)
            u8g2.print("!<");
           #endif
-          STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_ERROR_A ;
+          //STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_ERROR_A ;
+          STATUS_SYSTEM_CONDITION_ERROR_COUNT_A ++;
      }
      
-     if( level < STATUS_PHYS_PIN_INPUT_RANGE_A.STATUS_PHYS_PIN_INPUT_VALUE_MAX_A )  {
+     if( level > STATUS_PHYS_PIN_INPUT_RANGE_A.STATUS_PHYS_PIN_INPUT_VALUE_MAX_A )  {
           #if defined(HAS_u8g2)
            u8g2.print("!>");
           #endif
-          STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_ERROR_A ;
+         // STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_ERROR_A ;
+          STATUS_SYSTEM_CONDITION_ERROR_COUNT_A ++;
 
      }
      
@@ -28,3 +30,43 @@ void status_analog_pin(STATUS_PHYS_PIN_INPUT_ANALOG_T pin,
                u8g2.sendBuffer();         // transfer internal memory to the display
              #endif
 }
+
+
+
+void STATUS_SYSTEM_CONDITION_F(STATUS_SYSTEM_CONDITION_T &STATUS_SYSTEM_CONDITION_A,
+    STATUS_SYSTEM_CONDITION_ERROR_COUNT_T &STATUS_SYSTEM_CONDITION_ERROR_COUNT_A) {
+        /*if(STATUS_SYSTEM_CONDITION_A == STATUS_SYSTEM_CONDITION_INIT_A) {
+           STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_UNKNOWN_A ;
+        } else if(STATUS_SYSTEM_CONDITION_A == STATUS_SYSTEM_CONDITION_UNKNOWN_A)  {
+             STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_ERROR_A ;
+        }
+        */
+        if(STATUS_SYSTEM_CONDITION_ERROR_COUNT_A == STATUS_SYSTEM_CONDITION_ERROR_COUNT_INIT_A) {
+            STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_OK_A ;
+        } else {
+            STATUS_SYSTEM_CONDITION_A = STATUS_SYSTEM_CONDITION_ERROR_A ;
+        }
+}
+
+
+void STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_F(STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_A, 
+   STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_T STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_A) {
+   if(STATUS_SYSTEM_CONDITION_A == STATUS_SYSTEM_CONDITION_OK_A) {
+      digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_A, HIGH);
+   } else {
+      digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_OK_A, LOW);
+   }
+
+}
+
+
+
+void STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_F(STATUS_SYSTEM_CONDITION_T STATUS_SYSTEM_CONDITION_A, 
+   STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_T STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_A) {
+   if(STATUS_SYSTEM_CONDITION_A == STATUS_SYSTEM_CONDITION_ERROR_A) {
+      digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_A, HIGH);
+   } else {
+      digitalWrite(STATUS_PHYS_PIN_OUTPUT_SYSTEM_CONDITION_ERROR_A, LOW);
+   }
+
+}