a.binder 5 년 전
부모
커밋
35521f494b

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

@@ -89,6 +89,7 @@
 #include "__main_struct_limits.h"
 #include "__main_struct_limits.h"
 #include "_time_struct.h"
 #include "_time_struct.h"
 
 
+#include "__main_I2C_struc.h"
 
 
 
 
 #define  _ControllerID   0x101 
 #define  _ControllerID   0x101 
@@ -96,10 +97,7 @@
 
 
 #include "config_Active_ControllerID.h"
 #include "config_Active_ControllerID.h"
 
 
-#if defined(HAS_I2C_driver_Adafruit_PWMServoDriver)            
-         #include <Wire.h>
-         #include <Adafruit_PWMServoDriver.h>
-#endif
+
 
 
 
 
 #if defined(HAS_TFT_ILI9163C)
 #if defined(HAS_TFT_ILI9163C)
@@ -111,10 +109,23 @@
 
 
 #include "_DISPLAY_struct.h"
 #include "_DISPLAY_struct.h"
 #include "_Port_ID_sruct.h"
 #include "_Port_ID_sruct.h"
-#include "_I2C_driver_Adafruit_PWMServoDriver_struct.h"
+
 #include "_TASK_TYPES_struct.h"
 #include "_TASK_TYPES_struct.h"
 #include "_Slave_Ports_Status_QUEUE_struct.h"
 #include "_Slave_Ports_Status_QUEUE_struct.h"
 //#include "Slave_Ports_Status_QUEUE.h"
 //#include "Slave_Ports_Status_QUEUE.h"
+
+
+#include "_I2C_driver_Adafruit_PWMServoDriver_struct.h"
+
+
+
+
+#if defined(HAS_I2C_driver_Adafruit_PWMServoDriver)
+ #include "_I2C_driver_Adafruit_PWMServoDriver_config.h"
+#endif
+
+
+
 #include "Queue.h"
 #include "Queue.h"
  
  
  Queue<int> _Slave_Ports_queue = Queue<int>(10);
  Queue<int> _Slave_Ports_queue = Queue<int>(10);
@@ -292,6 +303,10 @@ void setup() {
  LCDarray2.concat(String(Active_ControllerID, HEX) ) ;
  LCDarray2.concat(String(Active_ControllerID, HEX) ) ;
  */
  */
 
 
+
+#if defined(HAS_I2C_driver_Adafruit_PWMServoDriver)            
+         #include "_I2C_driver_Adafruit_PWMServoDriver_setup.h"
+#endif
   
   
   // put your setup code here, to run once:
   // put your setup code here, to run once:
   #if defined(HAS_LCD1602)
   #if defined(HAS_LCD1602)

+ 5 - 0
SE/stuff/P5_Automation_can-dev-res/_I2C_driver_Adafruit_PWMServoDriver_config.h

@@ -0,0 +1,5 @@
+//I2C_driver_Adafruit_PWMServoDriver
+
+#include <Wire.h>
+#include <Adafruit_PWMServoDriver.h>
+ 

+ 32 - 1
SE/stuff/P5_Automation_can-dev-res/_I2C_driver_Adafruit_PWMServoDriver_func.h

@@ -1 +1,32 @@
-//I2C_driver_Adafruit_PWMServoDriver
+//I2C_driver_Adafruit_PWMServoDriver
+
+
+/*
+   Serial.println("pwm1.setPWM(0, 1024, 2000");
+  pwm1.setPWM(0, 1024, 3072);
+    delay(2500);
+    
+  
+  Serial.println("pwm1.setPWM(0, 2000, 3072");
+  pwm1.setPWM(0, 2000, 3072);
+  delay(2500);
+
+
+ Serial.println("pwm1.setPWM(0, 3072, 2000");
+  pwm1.setPWM(0, 3072, 2000 );
+  delay(2500);
+
+
+  Serial.println("pwm1.setPWM(0, 1024, 3072");
+  pwm1.setPWM(0, 1024, 3072);
+  delay(2500);
+
+Serial.println("pwm1.setPWM(0, 4096, 0");
+   pwm1.setPWM(0, 4096, 0);
+  delay(2500);
+  
+   Serial.println("pwm1.setPWM(0, 0, 4096");
+   pwm1.setPWM(0, 0, 4096);
+  delay(2500);
+  
+}*/

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

@@ -1,4 +1,6 @@
 //I2C_driver_Adafruit_PWMServoDriver
 //I2C_driver_Adafruit_PWMServoDriver
 
 
-#include <Wire.h>
-#include <Adafruit_PWMServoDriver.h>
+
+Adafruit_PWMServoDriver  Adafruit_PWMServoDriver_0X40 = Adafruit_PWMServoDriver(0x40);
+Adafruit_PWMServoDriver  Adafruit_PWMServoDriver_0X41 = Adafruit_PWMServoDriver(0x41);
+ 

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

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

+ 15 - 1
SE/stuff/P5_Automation_can-dev-res/_I2C_driver_Adafruit_PWMServoDriver_struct.h

@@ -1 +1,15 @@
-//I2C_driver_Adafruit_PWMServoDriver
+//I2C_driver_Adafruit_PWMServoDriver
+
+
+
+/*
+
+
+Board 0:  Address = 0x40  Offset = binary 00000 (no jumpers required)
+Board 1:  Address = 0x41  Offset = binary 00001 (bridge A0 as in the photo above)
+Board 2:  Address = 0x42  Offset = binary 00010 (bridge A1)
+Board 3:  Address = 0x43  Offset = binary 00011 (bridge A0 & A1)
+Board 4:  Address = 0x44  Offset = binary 00100 (bridge A2)
+
+*/
+

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

@@ -7,3 +7,9 @@ typedef  byte PortTypes_T ;
  const  PortTypes_T PortTypes_EXP         =  B00000100 ; // 0x03
  const  PortTypes_T PortTypes_EXP         =  B00000100 ; // 0x03
  const  PortTypes_T PortTypes_P2M_EXP_I2C =  PortTypes_PWM + PortTypes_I2C + PortTypes_EXP  ; //0x07 ;
  const  PortTypes_T PortTypes_P2M_EXP_I2C =  PortTypes_PWM + PortTypes_I2C + PortTypes_EXP  ; //0x07 ;
 
 
+
+
+
+typedef int PortTypes_PWM_FREQ ;
+
+const PortTypes_PWM_FREQ PortTypes_PWM_FREQ_DEFAULT = 50 ; 

+ 60 - 0
SE/stuff/P5_Automation_can-dev-res/_Port_I2C_driver_struct.h

@@ -4,3 +4,63 @@ typedef int I2C_driver_T ;
 const I2C_driver_T  EI2C_driver_NOT_USED_ = 0x00 ;
 const I2C_driver_T  EI2C_driver_NOT_USED_ = 0x00 ;
 const I2C_driver_T  I2C_driver_Adafruit_PWMServoDriver = 0x01 ;
 const I2C_driver_T  I2C_driver_Adafruit_PWMServoDriver = 0x01 ;
 
 
+
+
+/*
+#include <Wire.h>
+#include <Adafruit_PWMServoDriver.h>
+
+ // Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);
+  Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDr    iver();
+
+
+  #define SERVOMIN 100
+  #define SERVOMAX 2200
+
+  
+int servoNo = 0; // Defines a counter for servos.
+
+
+void setup() {
+  // put your setup code here, to run once:
+ Serial.begin(9600);
+  Serial.println("16 channel PWM test!");
+ 
+  pwm1.begin();
+//  pwm1.setPWMFreq(1600);  // This is the maximum PWM frequency
+  pwm1.setPWMFreq(50);  // This is the maximum PWM frequency
+
+}
+
+void loop() {
+  // put your main code here, to run repeatedly:
+ 
+   Serial.println("pwm1.setPWM(0, 1024, 2000");
+  pwm1.setPWM(0, 1024, 3072);
+    delay(2500);
+    
+  
+  Serial.println("pwm1.setPWM(0, 2000, 3072");
+  pwm1.setPWM(0, 2000, 3072);
+  delay(2500);
+
+
+ Serial.println("pwm1.setPWM(0, 3072, 2000");
+  pwm1.setPWM(0, 3072, 2000 );
+  delay(2500);
+
+
+  Serial.println("pwm1.setPWM(0, 1024, 3072");
+  pwm1.setPWM(0, 1024, 3072);
+  delay(2500);
+
+Serial.println("pwm1.setPWM(0, 4096, 0");
+   pwm1.setPWM(0, 4096, 0);
+  delay(2500);
+  
+   Serial.println("pwm1.setPWM(0, 0, 4096");
+   pwm1.setPWM(0, 0, 4096);
+  delay(2500);
+  
+}
+*/

+ 30 - 2
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_I2C_func.h

@@ -41,6 +41,12 @@
         Serial.print("] INDEX_NEXT[");                       Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A);
         Serial.print("] INDEX_NEXT[");                       Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A);
         Serial.print("] time_min_run_MIN[");                 Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_time_min_run_MIN_A);
         Serial.print("] time_min_run_MIN[");                 Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_time_min_run_MIN_A);
         Serial.print("] INDEX_time_min_run_MIN[");           Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_time_min_run_MIN_A);
         Serial.print("] INDEX_time_min_run_MIN[");           Serial.print(Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_time_min_run_MIN_A);
+        
+          
+             //    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"); 
+             //    } 
+          
     int i;
     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++) {
     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) {
       if(Slave_Ports_Status_A[i].PortTypes | PortTypes_I2C) {
@@ -49,9 +55,31 @@
                  Serial.print(" Port_ID[");  Serial.print(Slave_Ports_Status_A[i].Port_ID);   Serial.println("]  ");   Serial.print(" id[");  Serial.print(i);   Serial.println("]  "); 
                  Serial.print(" Port_ID[");  Serial.print(Slave_Ports_Status_A[i].Port_ID);   Serial.println("]  ");   Serial.print(" id[");  Serial.print(i);   Serial.println("]  "); 
                  
                  
                
                
+                    if(Slave_Ports_Status_A[i].I2C_driver == I2C_driver_Adafruit_PWMServoDriver) {
+                            if(Slave_Ports_Status_A[i].Address == I2C_ADDRESS_0x40 ) {
+                                    if(I2C_ADDRESS_0x40_A == ARDUINO_DRIVER_UNDEFINED) {
+                                        Adafruit_PWMServoDriver  Adafruit_PWMServoDriver_0X40 = Adafruit_PWMServoDriver(0x40);
+                                        I2C_ADDRESS_0x40_A = ARDUINO_DRIVER_INITIALIZED ;
+                                        Adafruit_PWMServoDriver_0X40.begin();
+                                        I2C_ADDRESS_0x40_A = ARDUINO_DRIVER_INITIALIZED_BEGIN ;
+                                         Adafruit_PWMServoDriver_0X40.setPWMFreq(PortTypes_PWM_FREQ_DEFAULT);
+                                        I2C_ADDRESS_0x40_A = ARDUINO_DRIVER_INITIALIZED_FREQ ;
+                                       
+                                    }
+                                       
+                            } else  if(Slave_Ports_Status_A[i].Address == I2C_ADDRESS_0x41 ) {
+                                    
+                            }  else {
+                               Serial.print("#6699  I2C_driver ADDRES "); Serial.print(Slave_Ports_Status_A[i].Address); Serial.println("] ");
+                            }
+                            
+                    
+                    
+                    } else {
+                          Serial.print("#61122  I2C_driver unsupported "); Serial.print(Slave_Ports_Status_A[i].I2C_driver); Serial.println("] ");
+                    }
                  
                  
-                 
-                 
+                
             }
             }
 
 
       }
       }

+ 3 - 1
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_QUEUE_func.h

@@ -198,7 +198,9 @@ void _Slave_Ports_queue__list( Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QU
                                                     Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_PORT_ASSOC_A);
                                                     Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_PORT_ASSOC_A);
                                                                            
                                                                            
                                         Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop]={} ;  
                                         Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop]={} ;  
-                     
+                                        Serial.print("#201 DELETED DISPLAY TASK_TYPE_A #[");     Serial.print( _Slave_Ports_queue_pop);
+                                        
+                                        
                       } else if(Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_TYPE_A == TASK_TYPE_T_Slave_Ports_set_I2C______) {
                       } else if(Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_TYPE_A == TASK_TYPE_T_Slave_Ports_set_I2C______) {
                                       Serial.print("#221 running TASK_TYPE_T_Slave_Ports_set_I2C______ = ");     Serial.println( Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_TYPE_A); Serial.println("]");     
                                       Serial.print("#221 running TASK_TYPE_T_Slave_Ports_set_I2C______ = ");     Serial.println( Slave_Ports_Status_QUEUE_A[_Slave_Ports_queue_pop].TASK_TYPE_A); Serial.println("]");     
                                       //#include "_Slave_Ports_ttl_decrement.h"
                                       //#include "_Slave_Ports_ttl_decrement.h"

+ 30 - 0
SE/stuff/P5_Automation_can-dev-res/__main_I2C_struc.h

@@ -0,0 +1,30 @@
+
+typedef int I2C_ADDRESS ;
+
+
+
+
+
+
+
+
+const I2C_ADDRESS  I2C_ADDRESS_0x40  = 0x40 ;
+const I2C_ADDRESS  I2C_ADDRESS_0x41  = 0x41 ;
+const I2C_ADDRESS  I2C_ADDRESS_0x42  = 0x42 ;
+const I2C_ADDRESS  I2C_ADDRESS_0x43  = 0x43 ;
+const I2C_ADDRESS  I2C_ADDRESS_0x44  = 0x44 ; 
+
+
+typedef ARDUINO_DRIVER_STATUS_T   I2C_ADDRESS_0x40_T;
+typedef ARDUINO_DRIVER_STATUS_T   I2C_ADDRESS_0x41_T;
+typedef ARDUINO_DRIVER_STATUS_T   I2C_ADDRESS_0x42_T;
+typedef ARDUINO_DRIVER_STATUS_T   I2C_ADDRESS_0x43_T;
+typedef ARDUINO_DRIVER_STATUS_T   I2C_ADDRESS_0x44_T; 
+
+
+
+I2C_ADDRESS_0x40_T I2C_ADDRESS_0x40_A = ARDUINO_DRIVER_UNDEFINED ;
+I2C_ADDRESS_0x41_T I2C_ADDRESS_0x41_A = ARDUINO_DRIVER_UNDEFINED ;
+I2C_ADDRESS_0x42_T I2C_ADDRESS_0x42_A = ARDUINO_DRIVER_UNDEFINED ;
+I2C_ADDRESS_0x43_T I2C_ADDRESS_0x43_A = ARDUINO_DRIVER_UNDEFINED ;
+I2C_ADDRESS_0x44_T I2C_ADDRESS_0x44_A = ARDUINO_DRIVER_UNDEFINED ;

+ 9 - 0
SE/stuff/P5_Automation_can-dev-res/__main_struct.h

@@ -77,3 +77,12 @@ const ARDUINO_ARRAY_INDEX_T ARDUINO_ATTR_ARRAY_S_INDEX = ARDUINO_ARRAY_INDEX_FIR
   #define MAGENTA 0xF81F
   #define MAGENTA 0xF81F
   #define YELLOW  0xFFE0  
   #define YELLOW  0xFFE0  
   #define WHITE   0xFFFF
   #define WHITE   0xFFFF
+  
+  typedef byte  ARDUINO_DRIVER_STATUS_T ;
+  
+  const ARDUINO_DRIVER_STATUS_T ARDUINO_DRIVER_UNDEFINED            = B00000000  ;
+  const ARDUINO_DRIVER_STATUS_T ARDUINO_DRIVER_UNSET                = B00000001  ;
+  const ARDUINO_DRIVER_STATUS_T ARDUINO_DRIVER_INITIALIZED          = B00000010  ;
+  const ARDUINO_DRIVER_STATUS_T ARDUINO_DRIVER_INITIALIZED_BEGIN    = B00000100  ;
+  const ARDUINO_DRIVER_STATUS_T ARDUINO_DRIVER_INITIALIZED_FREQ     = B00001000  ;
+