Instead of just setting a flag, keep a copy of the last thing written to the PCA and only call the sub if it's different from CH1_PWM
Code:
If Counter1 => CH1_on_Time and counter1 < CH1_off_time then ' check to see if the time in minutes since midnight matches the Channel on time
CH1_PWM = fadeset1 ' and of so set the PWM value (0 to 4095) to match the fadeset value (also 0 - 4095)
endif
If Counter1 => CH1_off_Time or Counter1 < CH1_on_time then ' check to see if the time in minutes since midnight matches the channel off time
CH1_PWM =0 ' and if it does, then set the PWM value to 0, this turning the channel off
endif
...
' check to see if CH1_PWM is different from last programmed value
if (CH1_PWM <> PCA_PWM) then
gosub SetPCA
endif
SetPCA:
PCA_PWM = CH1_PWM
pcaChannel = 0
i2cControl = $6 + 4*pcaChannel
I2CWRITE SDApin,SCLpin,i2cWriteAddress,i2cControl,[0,0,PCA_PWM.lowbyte,PCA_PWM.highbyte]
return
Bookmarks