@@ -882,6 +882,55 @@ def led_color(self, new_color):
882
882
else :
883
883
self .pixels [:] = colors
884
884
885
+ def get_camera_autosettings (self ):
886
+ exposure = (self .read_camera_register (0x3500 ) << 12 ) + \
887
+ (self .read_camera_register (0x3501 ) << 4 ) + \
888
+ (self .read_camera_register (0x3502 ) >> 4 );
889
+ wb = [self .read_camera_register (x ) for x in \
890
+ (0x3400 , 0x3401 , 0x3402 , 0x3403 , 0x3404 , 0x3405 )]
891
+
892
+ settings = {
893
+ 'gain' : self .read_camera_register (0x350b ),
894
+ 'exposure' : exposure ,
895
+ 'wb' : wb
896
+ }
897
+ return settings
898
+
899
+ def set_camera_wb (self , wb_register_values = None ):
900
+ if wb_register_values is None :
901
+ # just set to auto balance
902
+ self .camera .whitebal = True
903
+ return
904
+
905
+ if len (wb_register_values ) != 6 :
906
+ raise RuntimeError ("Please pass in 0x3400~0x3405 inclusive!" )
907
+
908
+ self .write_camera_register (0x3212 , 0x03 )
909
+ self .write_camera_register (0x3406 , 0x01 )
910
+ for i , reg_val in enumerate (wb_register_values ):
911
+ self .write_camera_register (0x3400 + i , reg_val )
912
+ self .write_camera_register (0x3212 , 0x13 )
913
+ self .write_camera_register (0x3212 , 0xa3 )
914
+
915
+ def set_camera_exposure (self , new_exposure = None ):
916
+ if new_exposure is None :
917
+ # just set auto expose
918
+ self .camera .exposure_ctrl = True
919
+ return
920
+ exposure_ctrl = False
921
+
922
+ self .write_camera_register (0x3500 , (new_exposure >> 12 ) & 0xFF )
923
+ self .write_camera_register (0x3501 , (new_exposure >> 4 ) & 0xFF )
924
+ self .write_camera_register (0x3502 , (new_exposure << 4 ) & 0xFF )
925
+
926
+ def set_camera_gain (self , new_gain = None ):
927
+ if new_gain is None :
928
+ # just set auto expose
929
+ self .camera .gain_ctrl = True
930
+ return
931
+
932
+ self .camera .gain_ctrl = False
933
+ self .write_camera_register (0x350b , new_gain )
885
934
886
935
class PyCamera (PyCameraBase ):
887
936
"""Wrapper class for the PyCamera hardware"""
0 commit comments