a.binder %!s(int64=5) %!d(string=hai) anos
pai
achega
6c458d3631

+ 5 - 2
SE/stuff/P5_Automation_can-dev-res/P5_Automation_can-dev-res.ino

@@ -185,6 +185,11 @@
   #include "_TFT_ILI9163C_func.h"
  #endif   
 
+
+
+#if defined(HAS_I2C_driver_Adafruit_PWMServoDriver)
+    #include "_I2C_driver_Adafruit_PWMServoDriver_func.h"
+#endif
 #include "_TASK_TYPES_func.h"
 #include "_Slave_Ports_Status_QUEUE_add_func.h"
 #include "_DISPLAY_add_record_func.h"
@@ -205,8 +210,6 @@
 
 #include "_time_func.h"
 
-
-
 #include "_Slave_Ports_ttl_decrement_func.h"
 #include "_Slave_Ports_broadcast_func.h"
 #include "_Slave_Ports_I2C_func.h"

+ 11 - 0
SE/stuff/P5_Automation_can-dev-res/_I2C_driver_Adafruit_PWMServoDriver_func.h

@@ -1,3 +1,14 @@
+
+
+ 
+ 
+  Adafruit_PWMServoDriver  Adafruit_PWMServoDriver_0X40 = Adafruit_PWMServoDriver(0x40);
+                                          //          
+                           //  ARDUINO_DRIVER_STATUS_T  Adafruit_PWMServoDriver_A =    ARDUINO_DRIVER_INITIALIZED_FREQ ;
+                             
+                               // Adafruit_PWMServoDriver_0X40.setPWM(0, 0, 200;
+                               //   Adafruit_PWMServoDriver_0X40.setPWM(0, 0, map(180, 0, 180, SERVOMIN, SERVOMAX));
+
 //I2C_driver_Adafruit_PWMServoDriver
 
 

+ 2 - 1
SE/stuff/P5_Automation_can-dev-res/_I2C_driver_Adafruit_PWMServoDriver_init.h

@@ -1,6 +1,7 @@
 //I2C_driver_Adafruit_PWMServoDriver
 
-
+/*
 Adafruit_PWMServoDriver  Adafruit_PWMServoDriver_0X40 = Adafruit_PWMServoDriver(0x40);
 Adafruit_PWMServoDriver  Adafruit_PWMServoDriver_0X41 = Adafruit_PWMServoDriver(0x41);
+ */
  

+ 6 - 0
SE/stuff/P5_Automation_can-dev-res/_I2C_driver_Adafruit_PWMServoDriver_setup.h

@@ -1,3 +1,9 @@
 //  pwm1.begin();
 //  pwm1.setPWMFreq(1600);  // This is the maximum PWM frequency
 //  pwm1.setPWMFreq(50);  // This is the maximum PWM frequency
+
+
+
+
+Adafruit_PWMServoDriver_0X40.begin();//Adafruit_PWMServoDriver_0X40
+Adafruit_PWMServoDriver_0X40.setPWMFreq(PortTypes_PWM_FREQ_DEFAULT);

+ 4 - 4
SE/stuff/P5_Automation_can-dev-res/_PortStates_struct.h

@@ -1,11 +1,11 @@
 
 typedef  byte Exp_state_T ;
 
- const  Exp_state_T Exp_state_OFF        =  B00000001 ; 
- const  Exp_state_T Exp_state_ON         =  B00000010 ;
- const  Exp_state_T Exp_state_ERROR      =  B10000000 ;
+ const  Exp_state_T Exp_state_OFF          =  B00000001 ; 
+ const  Exp_state_T Exp_state_ON           =  B00000010 ;
+ const  Exp_state_T Exp_state_ERROR        =  B10000000 ;
  //const  Exp_state_T Exp_state_TOGGLE     =  B10000000 ;
-
+const  Exp_state_T Exp_state_BLINK         =  B00000100 ;
 
  #define    Exp_state_OFF  0x01
  #define    Exp_state_ON  0x02

+ 17 - 5
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_I2C_func.h

@@ -46,10 +46,8 @@
              //    if(Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_PORT_ASSOC_A[1].Port_ID > 0 ) {
              //       Serial.println("#544A TASK_PORT_ASSOC_A unsupported individual"); 
              //    } 
-                            Adafruit_PWMServoDriver  Adafruit_PWMServoDriver_0X40 = Adafruit_PWMServoDriver(0x40);
-                                                     Adafruit_PWMServoDriver_0X40.begin();
-                                                     Adafruit_PWMServoDriver_0X40.setPWMFreq(PortTypes_PWM_FREQ_DEFAULT);
-                             ARDUINO_DRIVER_STATUS_T  Adafruit_PWMServoDriver_A =    ARDUINO_DRIVER_INITIALIZED_FREQ ;               
+                           
+               
     int i;
     for(i=ARDUINO_ARRAY_INDEX_FIRST;i <= (ARDUINO_ARRAY_INDEX_FIRST + Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_COUNT_A) ;i++) {
       if(Slave_Ports_Status_A[i].PortTypes | PortTypes_I2C) {
@@ -70,16 +68,30 @@
                                        
                                     }
                                     */
+                                    
+                                    
                                     if(Slave_Ports_Status_A[i].Exp_state == Exp_state_ON ) {
                                         Adafruit_PWMServoDriver_0X40.setPWM(Slave_Ports_Status_A[i].LocalPort, 4000, 4000);
                                         Serial.print("#77 I2C_driver Exp_state [ON]"); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.println("] ");
                                     } else if(Slave_Ports_Status_A[i].Exp_state == Exp_state_OFF ){
                                         Adafruit_PWMServoDriver_0X40.setPWM(Slave_Ports_Status_A[i].LocalPort, 0, 0);
                                         Serial.print("#77 I2C_driver Exp_state [OFF]"); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.println("] ");
+                                        
+                                         Adafruit_PWMServoDriver_0X40.setPWM(Slave_Ports_Status_A[i].LocalPort, 0, map(180, 0, 180, SERVOMIN, SERVOMAX));
+                                         delay(1500);
+                                         Adafruit_PWMServoDriver_0X40.setPWM(Slave_Ports_Status_A[i].LocalPort, 0, map(0, 0, 180, SERVOMIN, SERVOMAX));
+                                         delay(1500);
+                                         Adafruit_PWMServoDriver_0X40.setPWM(Slave_Ports_Status_A[i].LocalPort, 0, map(180, 0, 180, SERVOMIN, SERVOMAX));
+                                        
+                                    } else if(Slave_Ports_Status_A[i].Exp_state == Exp_state_BLINK ){
+                                         Adafruit_PWMServoDriver_0X40.setPWM(Slave_Ports_Status_A[i].LocalPort, 0,2000);
+                                         delay(1000);
+                                         Adafruit_PWMServoDriver_0X40.setPWM(Slave_Ports_Status_A[i].LocalPort, 0,1000);
                                     } else {
+                                    
                                      Serial.print("#7555 unsupp   I2C_driver Exp_state "); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.println("] ");
                                     }
-                                    //pulselength = map(degrees, 0, 180, SERVOMIN, SERVOMAX);
+                                    
                                        
                             } else  if(Slave_Ports_Status_A[i].Address == I2C_ADDRESS_0x41 ) {
                                     

+ 1 - 0
SE/stuff/P5_Automation_can-dev-res/_TASK_TYPES_struct.h

@@ -10,6 +10,7 @@ const TASK_TYPE_T TASK_TYPE_T_Slave_Ports_broadcast____ = 0x04 ;
 const TASK_TYPE_T TASK_TYPE_T_Slave_Ports_set_I2C______ = 0x05 ;
 const TASK_TYPE_T TASK_TYPE_T_DISPLAY_queue_pop________ = 0x06 ;
 const TASK_TYPE_T TASK_TYPE_T__EMPTY__JUST_PASSED_ARG__ = 0x07 ;
+const TASK_TYPE_T TASK_TYPE_T_Exp_state_BLINK_TOGGLE___ = 0x08 ;
 
 
 

+ 7 - 1
SE/stuff/P5_Automation_can-dev-res/__main_struct.h

@@ -61,7 +61,7 @@ const  ARDUINO_ARRAY_time_min_run_MIN_T ARDUINO_ARRAY_time_min_run_MIN_NOT_SET =
 
 const  ARDUINO_ARRAY_INDEX_time_min_run_MIN_T ARDUINO_ARRAY_INDEX_time_min_run_MIN_INIT = 0 ;
 
-const int ARDUINO_time_seq_id_A_INCREMENT = 10000 ; 
+const int ARDUINO_time_seq_id_A_INCREMENT = 1000 ; 
 
 const ARDUINO_ARRAY_INDEX_T ARDUINO_ATTR_ARRAY_S_INDEX = ARDUINO_ARRAY_INDEX_FIRST ;
 
@@ -86,3 +86,9 @@ const ARDUINO_ARRAY_INDEX_T ARDUINO_ATTR_ARRAY_S_INDEX = ARDUINO_ARRAY_INDEX_FIR
   const ARDUINO_DRIVER_STATUS_T ARDUINO_DRIVER_INITIALIZED_BEGIN    = B00000100  ;
   const ARDUINO_DRIVER_STATUS_T ARDUINO_DRIVER_INITIALIZED_FREQ     = B00001000  ;
   
+
+
+
+#define SERVOMIN  150 // this is the 'minimum' pulse length count (out of 4096)
+#define SERVOMAX  600 // this is the 'maximum' pulse length count (out of 4096)
+int degrees;

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res/__main_struct_limits.h

@@ -3,7 +3,7 @@ const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ATTR_ARRAY_S_LIMIT = 1 ;
 const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_T_TO_DELETE_S_LIMIT = 5 ;
 
 
-const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_PORTS = 100 ;
+const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_PORTS = 50 ;
 const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_DISPLAY = 10 ;
 
 const ARDUINO_ARRAY_INDEX_LIMIT_T  ARDUINO_ARRAY_INDEX_LIMIT_QUEUE = 20 ;

+ 26 - 2
SE/stuff/P5_Automation_can-dev-res/config_Slave_Ports_LOCAL_init.h

@@ -34,16 +34,18 @@ ARDUINO_FUNCT_INIT_RESULT_T _Slave_Ports_LOCAL_init(Slave_Ports_Status_T* Slave_
                                 I2C_driver_Adafruit_PWMServoDriver ,//int I2C_driver
                                 IS_Local_TRUE 
                                 );
+                                
+                                
                   Slave_Ports_Status_add_port(
                                 Slave_Ports_Status_A ,
                                 Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
                                     Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
                                     Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
                                     Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
-                                1,  // int  Port_ID,
+                                2,  // int  Port_ID,
                                 Active_ControllerID ,  //int  _Slave_ID,
                                 PortTypes_P2M_EXP_I2C , //int  PortTypes,
-                                0x00 ,  //int  Address,
+                                0x40 ,  //int  Address,
                                 2 , //int  LocalPort,
                                 Exp_state_OFF, //int  Exp_state,
                                 Exp_state_ttl_TO_REFRESH, //int  Exp_state_ttl,
@@ -53,6 +55,28 @@ ARDUINO_FUNCT_INIT_RESULT_T _Slave_Ports_LOCAL_init(Slave_Ports_Status_T* Slave_
                                 IS_Local_TRUE 
                                 );
                                 
+                                 Slave_Ports_Status_add_port(
+                                Slave_Ports_Status_A ,
+                                Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
+                                    Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
+                                3,  // int  Port_ID,
+                                Active_ControllerID ,  //int  _Slave_ID,
+                                PortTypes_P2M_EXP_I2C , //int  PortTypes,
+                                0x40 ,  //int  Address,
+                                3 , //int  LocalPort,
+                                Exp_state_BLINK, //int  Exp_state,
+                                Exp_state_ttl_TO_REFRESH, //int  Exp_state_ttl,
+                                Broadcast_state_TO_REFRESH, //int  Broadcast_state,
+                                I2C_port_DEFAULT, //int I2C_port,
+                                I2C_driver_Adafruit_PWMServoDriver ,//int I2C_driver
+                                IS_Local_TRUE 
+                                );
+                                
+                                
+                                
+                                
                     /*    DISPLAY__print_ANY(
                     DISPLAY_T_ARDUINO_ATTR_ARRAY_A , 
                     DISPLAY_PHYSICAL_CHAR_A,