a.binder 5 سال پیش
والد
کامیت
bba5a0a6ab

+ 1 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/P5_Automation_can-dev-res-working-1930.ino

@@ -84,6 +84,7 @@
 //#define LCD1602_DISPLAY_PHYSICAL_X_CHARS_A 
 //#define LCD1602_DISPLAY_PHYSICAL_Y_CHARS_A
 //#define HAS_ROTTARY_SW
+#define ROTTARY_ENCODER_ACTION_MILLIS_MIN 250
 //#define HAS_CAN
 
 

+ 2 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/_CAN/_Slave_Ports_Protocol_CAN_struct.h

@@ -269,7 +269,8 @@ void CAN_MSG8_A_Slave_Ports_Protocol_CAN_request_set_new_Exp_state_T(_Slave_Port
 void CAN_data_debug(byte data[8]) {
     int i;
      #if not defined(DISABLE_ANY_PRINT)
-    Serial.print("#102 CAN_data_debug   [  ");
+    //Serial.print("#102 CAN_data_debug   [  ");
+    SPFTFTFT(can,data,debug);
     for(i=0; i<8; i++) {
         Serial.print(" "); Serial.print(i+1); Serial.print("["); Serial.print(data[i]); Serial.print("."); Serial.print(data[i], HEX); Serial.print("] "); 
     }

+ 56 - 30
SE/stuff/P5_Automation_can-dev-res-working-1930/_DISPLAY_func.h

@@ -392,9 +392,11 @@ void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
                     #endif
                 
            
-                        if(DISPLAY_LATENCY_PASS__POP(time_seq_id_A, time_min_run_A )) {
-                        
-                        
+                        if(DISPLAY_LATENCY_PASS__POP(time_seq_id_A, time_min_run_A ) or DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A == true  ) {
+                                if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A == true ) { 
+                                    SPFTFT2(display,refresh,396);
+                                }
+                                
                         
                           if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A | DISPLAY_MENU_SELECTOR_MENU_FLAG)  {
                                minXselector_context = 1 ;
@@ -408,16 +410,15 @@ void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
                            else maxY = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SIZE_Y_CHARS_MAX_A * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A ;
                          
                         
-                             #if defined(USE_DISPLAY_char_PA)
-                              
-                                //debug
-                                    DISPLAY_DEV.fillRect(0, 8 * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A ,
-                                                                       120, DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A * 2 , BLUE );                        
-                                      DISPLAY_DEV.setCursor(minXi , 8 * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A );
-                                      DISPLAY_DEV.print("T:"); DISPLAY_DEV.print(time_seq_id_A); DISPLAY_DEV.print(" ");  DISPLAY_DEV.print(Slave_Ports_Status_A[1].Exp_state_level_A);
-                                  
-                                DISPLAY_DEV.print(" P:");
-                            #endif 
+                                #if defined(USE_DISPLAY_char_PA)
+                                   //debug
+                                       DISPLAY_DEV.fillRect(0, 8 * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A ,
+                                                                          120, DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A * 2 , BLUE );                        
+                                         DISPLAY_DEV.setCursor(minXi , 8 * DISPLAY_PHYSICAL_CHAR_A.DISPLAY_textsize_y_A );
+                                         DISPLAY_DEV.print("T:"); DISPLAY_DEV.print(time_seq_id_A); DISPLAY_DEV.print(" ");  DISPLAY_DEV.print(Slave_Ports_Status_A[1].Exp_state_level_A);
+                                     
+                                   DISPLAY_DEV.print(" P:");
+                                 #endif 
                            // DISPLAY_DEV.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[1].DISPLAY_char_PA*);
                           // DISPLAY_char_P_print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[1].DISPLAY_char_PA); 
                          #if defined(USE_DISPLAY_string_T)
@@ -430,7 +431,8 @@ void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
                                  // DISPLAY_DEV.setCursor(20 , (20 + (i * 5)));
                                  // DISPLAY_DEV.print("test88");
                           
-                                      if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_ITEM_FLAG_A == DISPLAY_MENU_ITEM_FLAG_INITIALIZED ) {
+                                      if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_MENU_ITEM_FLAG_A == DISPLAY_MENU_ITEM_FLAG_INITIALIZED 
+                                            and DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_ELEMENT_TO_REFRESH_A == true ) {
                                       
                                             //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].time_seq_id_A + ARDUINO_LOOP_LATENCY_DISPLAY_MENU >  time_seq_id_A  ) {
                                                   // Serial.print(" 366[LAT[ "); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].time_seq_id_A); Serial.print("] ");
@@ -550,7 +552,7 @@ void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
                                                                             DISPLAY_DEV.print(message[iA]);
                                                                           }
                                                                   }
-                                                // DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_ELEMENT_TO_REFRESH_A = false;
+                                                 DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_A[i].DISPLAY_ELEMENT_TO_REFRESH_A = false;
                                                 //    }
                                                  
                                                   
@@ -568,7 +570,9 @@ void DISPLAY__print_menu(DISPLAY_T* DISPLAY_A ,
                                   
                                   }
            
-            }//if((DISPLAY_LATENCY_PASS__POP(time_seq_id_A, time_min_run_A ))
+            } else { //if((DISPLAY_LATENCY_PASS__POP(time_seq_id_A, time_min_run_A ))
+              //  SPFTFT2(display,bypassed,572);
+            }
     }
 
 #endif
@@ -677,11 +681,12 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                       
                  } else if(DISPLAY_MENU_SELECTOR_oldEncPos_A < DISPLAY_MENU_SELECTOR_encoderPos_A) { // if(DISPLAY_MENU_SELECTOR_oldEncPos_A > DISPLAY_MENU_SELECTOR_encoderPos_A) {
                         #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
-                        Serial.print(" #482[ENCODER][CHANGED]> ");
+                        SPFTFT2(encoder,changed,482);
                         #endif
                         if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A + 1)].DISPLAY_MENU_ITEM_FLAG_A == DISPLAY_MENU_ITEM_FLAG_INITIALIZED) {
                             #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
-                            Serial.print(" #482[ENCODER][MARKED]> ");
+                            //Serial.print(" #482[ENCODER][MARKED]> ");
+                            SPFTFT2(encoder,marked,482);
                             #endif
                             DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_EMPTY_FLAG ;
                             DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A ++;
@@ -692,20 +697,23 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                  
             } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_FLAG) {  // else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_FLAG)
                     //rotate selectors
-                     Serial.print(" #560[ENCODER][_ITEM_OPTIONS_FLAG]> ");Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN); Serial.print("]");
+                     
+                     SPFTFTFT(encoder,item,option);SPFT2(flag,560);
+                     Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A, BIN); Serial.print("]");
                      if(DISPLAY_MENU_SELECTOR_oldEncPos_A != DISPLAY_MENU_SELECTOR_encoderPos_A)  {
                                 if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG) {
-                                    Serial.print(" >[LEV] ");
+                                    SPFT(level);
                                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A -  DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG ;
                                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A | DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG ;
                                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A ;
                                 } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A & DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG) {
-                                    Serial.print(" >[TOG] ");
+                                        SPFT(toggle);
                                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A - DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_TOGGLE_FLAG ;
                                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A | DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_LEVEL_FLAG ;
                                          DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A ;
                                 } else {
-                                        Serial.print(" >[ELS][LEV] css[");
+                                        
+                                        SPFT(else);SPFT(level);SPFT(class);
                                         Serial.print(String(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_CLASS_A  , BIN) );
                                         if( DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_ITEM_CLASS_A &  DISPLAY_MENU_ITEM_CLASS_MENU_TITLE) {
                                             SPFT(menu_class); SPFT(ignored);
@@ -720,9 +728,10 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
             
             } else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG) { //else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_FLAG)
                 if(DISPLAY_MENU_SELECTOR_oldEncPos_A > DISPLAY_MENU_SELECTOR_encoderPos_A) {
-                 Serial.print("[LEV]-");Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A);
+                 SPFT(level);SPFT(minus);SPFT2(encoder,DISPLAY_MENU_SELECTOR_encoderPos_A);SPFT2(old,DISPLAY_MENU_SELECTOR_oldEncPos_A);
+                 Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A);
                              if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A > 0) {
-                             DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A -=5  ; //--;
+                             DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A -=5 * abs(DISPLAY_MENU_SELECTOR_oldEncPos_A - DISPLAY_MENU_SELECTOR_encoderPos_A)  ; //--;
                              if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A < 0 ) DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A = 0 ;
                                     TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={0,0,DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A};
                                     
@@ -738,8 +747,24 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                              } //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A > 0) {
                 } else if(DISPLAY_MENU_SELECTOR_oldEncPos_A < DISPLAY_MENU_SELECTOR_encoderPos_A) {
                              if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A < 254) {
+                                   int overload;
+                                   overload = 1 ;
+                                    SPFTFT2(millis,debug,748);
+                                   if(encoderPos_t < millis() ) {
+                                        encoderPos_t = millis() + 1000 ;
+                                        encoderPos_t1 = millis() + 500 ;
+                                        encoderPos_t2 = millis() + 250 ;
+                                   } else if(encoderPos_t1 < millis()   ) {
+                                    SPFT2(overload,500);
+                                    overload = 2;
+                                   } else if(encoderPos_t2 < millis()  ) {
+                                    SPFT2(overload,250);
+                                   } else  {
+                                     overload = 4 ;
+                                     SPFT2(overload, encoderPos_t - millis());
+                                   }
                                     
-                                    DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A +=5 ; //+;
+                                    DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A += 5 * abs(DISPLAY_MENU_SELECTOR_oldEncPos_A - DISPLAY_MENU_SELECTOR_encoderPos_A) * overload; //+;
                                     if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A >254) DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A = 254;
                                     TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={0,0,DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A};
                                     Slave_Ports_Status_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].ARDUINO_ARRAY_INDEX_A].Exp_state_level_A = DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A ;
@@ -754,14 +779,15 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                                     
                              } //if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].Exp_state_level_A < 254) {
                 } else { //  if(DISPLAY_MENU_SELECTOR_oldEncPos_A < DISPLAY_MENU_SELECTOR_encoderPos_A) {
-                    Serial.print("[ERR}750E");
+                    SPFT2(error,750); //Serial.print("[ERR}750E");
                 }
                 
             } //else  if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG)
         
         } else if(DISPLAY_MENU_SELECTOR_triggerCountOld_A != DISPLAY_MENU_SELECTOR_triggerCount_A) {
             #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
-            Serial.print("[TRIG++]?");   
+            //Serial.print("[TRIG++]?");
+            SPFTFT(trigger,plus);   
             #endif
                  if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_MENU_FLAG) {
                     #if defined(DISPLAY_MENU_SELECTOR_DEBUG) 
@@ -807,15 +833,15 @@ void DISPLAY_MENU_SELECTOR(DISPLAY_T* DISPLAY_A ,
                     //back to elements
                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_INDEX_A].DISPLAY_MENU_ITEM_A[DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_ITEM_INDEX_A].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG;
                         DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A = DISPLAY_MENU_SELECTOR_ITEM_FLAG ;
-                 } else { //else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG)
-                   Serial.print("ELSE777["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A,  BIN);
+                 } else { //else if(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A == DISPLAY_MENU_SELECTOR_ITEM_OPTIONS_USE_LEVEL_FLAG) 
+                   SPFT2(else,777); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A,  BIN);
                  } 
         } // if(DISPLAY_MENU_SELECTOR_oldEncPos_A != DISPLAY_MENU_SELECTOR_encoderPos_A ) {
         
         
         
         #if defined(DISPLAY_MENU_SELECTOR_DEBUG)
-        Serial.print("DEBUG["); Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A,  BIN);
+        SPFT(debug);Serial.print(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_SELECTOR_A[1].DISPLAY_MENU_SELECTOR_STATUS_A,  BIN);
         #endif
         Serial.println("   ");
         

+ 3 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/_DISPLAY_struct.h

@@ -185,6 +185,7 @@ typedef struct DISPLAY_MENU_ITEM_S DISPLAY_MENU_ITEM_T ;
            ARDUINO_ARRAY_INDEX_CURRENT_T ARDUINO_ARRAY_INDEX_CURRENT_A ; //ktory jest aktywny element
            DISPLAY_MENU_SELECTOR_STATUS_T DISPLAY_MENU_SELECTOR_STATUS_A ; //opcja kontekstu selektora
            DISPLAY_CURSOR_SHIFT_Y_T DISPLAY_CURSOR_SHIFT_Y_A  = 0; //
+           DISPLAY_ELEMENT_TO_REFRESH_T DISPLAY_ELEMENT_TO_REFRESH_A = true;
   }
 ;
  
@@ -203,6 +204,8 @@ typedef struct DISPLAY_MENU_ITEM_S DISPLAY_MENU_ITEM_T ;
            DISPLAY_textsize_y_T DISPLAY_textsize_y_A;
            DISPLAY_MENU_T DISPLAY_MENU_A[ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY_MENU] ;
            DISPLAY_MENU_SELECTOR_T DISPLAY_MENU_SELECTOR_A[1] ;
+           DISPLAY_ELEMENT_TO_REFRESH_T DISPLAY_ELEMENT_TO_REFRESH_A ;//= true;
+
  } ;
  
   typedef  struct DISPLAY_PHYSICAL_CHAR_S DISPLAY_PHYSICAL_CHAR_T  ;

+ 25 - 16
SE/stuff/P5_Automation_can-dev-res-working-1930/_ROTTARY_SW/_ROTTARY_SW_loop.h

@@ -26,26 +26,35 @@
  
  if(oldEncPos != encoderPos) {
  
-    
+  //register
+    //unsigned long encoderPos_t = 0;
+
     static I2C_INDEX_DRIVER_T I2C_INDEX_DRIVER_A ;
  
-    Serial.print(" ROT_SW[");  Serial.print(encoderPos);  Serial.print("] ");  
+    //Serial.print(" ROT_SW[");  Serial.print(encoderPos);  Serial.print("] ");  
+    SPL();SPFT3(rottary,encoderPos,oldEncPos);SPFT2(debug,34);
     
-    DISPLAY_MENU_SELECTOR(DISPLAY_A ,
-            DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
-            DISPLAY_PHYSICAL_CHAR_A, 
-            Slave_Ports_Status_A , Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
-           // DISPLAY_MENU_ITEM_INDEX_A ,
-             time ,
-            0 , 
-        //DISPLAY_MENU_SELECTOR_STATUS_A , //; //which mode - provide func
-        DISPLAY_MENU_SELECTOR_SWITCH_UNKNOWN,  //DISPLAY_MENU_SELECTOR_SWITCH_NOT_PUSHED //DISPLAY_MENU_SELECTOR_SWITCH_PUSHED //DISPLAY_MENU_SELECTOR_SWITCH_UNKNOWN
-        oldEncPos , //DISPLAY_MENU_SELECTOR_oldEncPos_A , //; //values
-         encoderPos, // DISPLAY_MENU_SELECTOR_encoderPos_A
-         triggerCountOld , triggerCount 
-       ) ;
+
+    //if(encoderPos_t < millis() ) {
+        DISPLAY_MENU_SELECTOR(DISPLAY_A ,
+                DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
+                DISPLAY_PHYSICAL_CHAR_A, 
+                Slave_Ports_Status_A , Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
+               // DISPLAY_MENU_ITEM_INDEX_A ,
+                 time ,
+                0 , 
+            //DISPLAY_MENU_SELECTOR_STATUS_A , //; //which mode - provide func
+            DISPLAY_MENU_SELECTOR_SWITCH_UNKNOWN,  //DISPLAY_MENU_SELECTOR_SWITCH_NOT_PUSHED //DISPLAY_MENU_SELECTOR_SWITCH_PUSHED //DISPLAY_MENU_SELECTOR_SWITCH_UNKNOWN
+            oldEncPos , //DISPLAY_MENU_SELECTOR_oldEncPos_A , //; //values
+             encoderPos, // DISPLAY_MENU_SELECTOR_encoderPos_A
+             triggerCountOld , triggerCount 
+           ) ;
     
-    oldEncPos = encoderPos;
+            oldEncPos = encoderPos;
+     //       encoderPos_t = millis() + ROTTARY_ENCODER_ACTION_MILLIS_MIN;    
+    // } else {
+    //    SPFTFTFT(encoder,action,bypassed);
+     //}   
   //  int pwmVal = encoderPos * 5 ;
   //  if (pwmVal == 0 ) pwmVal = 1; 
    

+ 2 - 2
SE/stuff/P5_Automation_can-dev-res-working-1930/_ROTTARY_SW/_ROTTARY_SW_struct.h

@@ -1,7 +1,7 @@
 volatile byte aFlag = 0; // let's us know when we're expecting a rising edge on pinA to signal that the encoder has arrived at a detent
 volatile byte bFlag = 0; // let's us know when we're expecting a rising edge on pinB to signal that the encoder has arrived at a detent (opposite direction to when aFlag is set)
-volatile byte encoderPos = 0; //this variable stores our current value of encoder position. Change to int or uin16_t instead of byte if you want to record a larger range than 0-255
-volatile byte oldEncPos = 0; //stores the last encoder position value so we can compare to the current reading and see if it has changed (so we know when to print to the serial monitor)
+volatile byte encoderPos = 50; //this variable stores our current value of encoder position. Change to int or uin16_t instead of byte if you want to record a larger range than 0-255
+volatile byte oldEncPos = 50; //stores the last encoder position value so we can compare to the current reading and see if it has changed (so we know when to print to the serial monitor)
 
 volatile byte reading1 = 0; //somewhere to store the direct values we read from our interrupt pins before checking to see if we have moved a whole detent
 volatile byte reading2 = 0; //somewhere to store the direct values we read from our interrupt pins before checking to see if we have moved a whole detent

+ 8 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/_Slave_Ports_Status_func.h

@@ -233,6 +233,14 @@
                 DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].DISPLAY_MENU_ITEM_CLASS_A = DISPLAY_MENU_ITEM_CLASS_ITEM ;
 
                 DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].ARDUINO_ARRAY_INDEX_A = i  ;
+                if(Slave_Ports_Status_A[i].DISPLAY_ELEMENT_TO_REFRESH_A == true ) {
+                    DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].DISPLAY_ELEMENT_TO_REFRESH_A = true ; // DISPLAY_MENU_ITEM_CLASS_ITEM ;
+                    DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_ELEMENT_TO_REFRESH_A = true;
+                    DISPLAY_PHYSICAL_CHAR_A.DISPLAY_ELEMENT_TO_REFRESH_A = true;
+                    Slave_Ports_Status_A[i].DISPLAY_ELEMENT_TO_REFRESH_A = false;
+                 }
+
+                
                            #if defined(USE_MESSAGE_OLD)
                 message.toCharArray(DISPLAY_char24_A, message.length());
                  memcpy(DISPLAY_PHYSICAL_CHAR_A.DISPLAY_MENU_A[1].DISPLAY_MENU_ITEM_A[i+1].DISPLAY_char24_A, DISPLAY_char24_A, message.length());

+ 2 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/_Slave_Ports_Status_struct.h

@@ -73,6 +73,8 @@ const Address_T Address_NOT_DEFINED_A = 0x00 ;
   IS_Local_T IS_Local_A; // Define if port is local or remote added
   IS_gone_T IS_gone_A; // Define port is gone timoiuted
   Exp_state_level_T Exp_state_level_A = Exp_state_level_INIT ;
+  DISPLAY_ELEMENT_TO_REFRESH_T DISPLAY_ELEMENT_TO_REFRESH_A = true;
+
 } ;
 
 typedef struct Slave_Ports_Status_S Slave_Ports_Status_T;

+ 2 - 0
SE/stuff/P5_Automation_can-dev-res-working-1930/_Slave_Ports_action_func.h

@@ -30,6 +30,7 @@ Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QUEUE_A,
                 Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state = Exp_state_A ; 
                 Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state_ttl = Exp_state_ttl_TO_REFRESH ;
                 Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state_level_A = Exp_state_level_A ;
+                Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].DISPLAY_ELEMENT_TO_REFRESH_A = true ;
                 if(Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].IS_Local_A == IS_Local_TRUE) flag_set_LOCAL ++ ;
                 if(Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].IS_Local_A == IS_Local_FALSE) flag_sent_CAN ++ ;
                 //_Slave_Ports_queue__add(  Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
@@ -45,6 +46,7 @@ Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QUEUE_A,
                      TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX = i ;
                      if(Slave_Ports_Status_A[i].IS_Local_A == IS_Local_TRUE) flag_set_LOCAL ++ ;
                       if(Slave_Ports_Status_A[i].IS_Local_A == IS_Local_FALSE) flag_sent_CAN ++ ;
+                      Slave_Ports_Status_A[i].DISPLAY_ELEMENT_TO_REFRESH_A = true;
                    // _Slave_Ports_queue__add(  Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,
                    //  TASK_TYPE_T_request_set_new_Exp_state  ,TASK_PORT_ASSOC_A ,time_seq_id, time_min_run  , ARDUINO_ARRAY_INDEX_NOT_SET ) ; 
                 }

+ 8 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/_TFT_ILI9163C_struct.h

@@ -51,6 +51,8 @@ struct DISPLAY_PHYSICAL_CHAR_S {
           }
           */
          //DISPLAY_PHYSICAL_CHAR_T 
+         DISPLAY_ELEMENT_TO_REFRESH_T DISPLAY_ELEMENT_TO_REFRESH_A_temp = false;
+         
   static      DISPLAY_PHYSICAL_CHAR_T   DISPLAY_PHYSICAL_CHAR_A =   { 
                  DISPLAY_PHYSICAL_X_PX_A ,
                  DISPLAY_PHYSICAL_Y_PX_A ,
@@ -59,6 +61,11 @@ struct DISPLAY_PHYSICAL_CHAR_S {
                  DISPLAY_CURSOR_X_CHARS_A,
                  DISPLAY_CURSOR_Y_CHARS_A,
                  DISPLAY_textsize_x_A,
-                 DISPLAY_textsize_y_A }
+                 DISPLAY_textsize_y_A//, true
+                 //,
+                 //  {} ,
+                 //  {} ,
+                 //   DISPLAY_ELEMENT_TO_REFRESH_A_temp
+                  }
           ;
       

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/___CONFIG/0x35/config_Active_ControllerID_0x35.h

@@ -19,7 +19,7 @@
 //#define HAS_CAN
 //#define DISPLAY__print_menu_DELAY
 #define HAS__PCINT_setup //to allow interrupts
-#define DEBUG_QUEUE_WAIT
+//#define DEBUG_QUEUE_WAIT
 //#define DEBUG_LATENCY_MARKER
 //#define DISABLE_TASK_TYPE_T_DISPLAY_queue_pop________
 //#error

+ 6 - 1
SE/stuff/P5_Automation_can-dev-res-working-1930/___main/__main_struct_limits.h

@@ -29,6 +29,11 @@ ARDUINO_ARRAY_time_min_run_MIN_T TASK_TYPE_T_Slave_Ports_set_I2C______time_min_r
 
 const ARDUINO_LOOP_LATENCY_TASK_T ARDUINO_LOOP_LATENCY_TASK_ROTTARY_SW_loop_A = 100 ;//500 ; //how to implement?
 
-const ARDUINO_LOOP_LATENCY_TASK_T ARDUINO_LOOP_LATENCY_DISPLAY_MENU = 300 ; //1200 ; //how to implement?
+const ARDUINO_LOOP_LATENCY_TASK_T ARDUINO_LOOP_LATENCY_DISPLAY_MENU = 1200 ; //300 ; //1200 ; //how to implement?
 
 #define NUMBER_SHORTS_TO_ALLOCATE 20
+
+
+unsigned long encoderPos_t = 0; //todo turbo mode set values
+unsigned long encoderPos_t1 = 0; //todo turbo mode set values
+unsigned long encoderPos_t2 = 0; //todo turbo mode set values