51
51
//| Most people should not use this class directly. Use a specific display driver instead that will
52
52
//| contain the startup and shutdown sequences at minimum.
53
53
//|
54
- //| .. class:: EPaperDisplay(display_bus, start_sequence, stop_sequence, *, width, height, ram_width, ram_height, colstart=0, rowstart=0, rotation=0, set_column_window_command=None, set_row_window_command=None, single_byte_bounds=False, write_black_ram_command, black_bits_inverted=False, write_color_ram_command=None, color_bits_inverted=False, highlight_color=0x000000, refresh_display_command, busy_pin=None, busy_state=True, seconds_per_frame=180, always_toggle_chip_select=False)
54
+ //| .. class:: EPaperDisplay(display_bus, start_sequence, stop_sequence, *, width, height, ram_width, ram_height, colstart=0, rowstart=0, rotation=0, set_column_window_command=None, set_row_window_command=None, single_byte_bounds=False, write_black_ram_command, black_bits_inverted=False, write_color_ram_command=None, color_bits_inverted=False, highlight_color=0x000000, refresh_display_command, refresh_time=40, busy_pin=None, busy_state=True, seconds_per_frame=180, always_toggle_chip_select=False)
55
55
//|
56
56
//| Create a EPaperDisplay object on the given display bus (`displayio.FourWire` or `displayio.ParallelBus`).
57
57
//|
83
83
//| :param bool color_bits_inverted: True if 0 bits are used to show the color. Otherwise, 1 means to show color.
84
84
//| :param int highlight_color: RGB888 of source color to highlight with third ePaper color.
85
85
//| :param int refresh_display_command: Command used to start a display refresh
86
+ //| :param float refresh_time: Time it takes to refresh the display before the stop_sequence should be sent. Ignored when busy_pin is provided.
86
87
//| :param microcontroller.Pin busy_pin: Pin used to signify the display is busy
87
88
//| :param bool busy_state: State of the busy pin when the display is busy
88
- //| :param int seconds_per_frame: Minimum number of seconds between screen refreshes
89
+ //| :param float seconds_per_frame: Minimum number of seconds between screen refreshes
89
90
//| :param bool always_toggle_chip_select: When True, chip select is toggled every byte
90
91
//|
91
92
STATIC mp_obj_t displayio_epaperdisplay_make_new (const mp_obj_type_t * type , size_t n_args , const mp_obj_t * pos_args , mp_map_t * kw_args ) {
92
- enum { ARG_display_bus , ARG_start_sequence , ARG_stop_sequence , ARG_width , ARG_height , ARG_ram_width , ARG_ram_height , ARG_colstart , ARG_rowstart , ARG_rotation , ARG_set_column_window_command , ARG_set_row_window_command , ARG_set_current_column_command , ARG_set_current_row_command , ARG_write_black_ram_command , ARG_black_bits_inverted , ARG_write_color_ram_command , ARG_color_bits_inverted , ARG_highlight_color , ARG_refresh_display_command , ARG_busy_pin , ARG_busy_state , ARG_seconds_per_frame , ARG_always_toggle_chip_select };
93
+ enum { ARG_display_bus , ARG_start_sequence , ARG_stop_sequence , ARG_width , ARG_height , ARG_ram_width , ARG_ram_height , ARG_colstart , ARG_rowstart , ARG_rotation , ARG_set_column_window_command , ARG_set_row_window_command , ARG_set_current_column_command , ARG_set_current_row_command , ARG_write_black_ram_command , ARG_black_bits_inverted , ARG_write_color_ram_command , ARG_color_bits_inverted , ARG_highlight_color , ARG_refresh_display_command , ARG_refresh_time , ARG_busy_pin , ARG_busy_state , ARG_seconds_per_frame , ARG_always_toggle_chip_select };
93
94
static const mp_arg_t allowed_args [] = {
94
95
{ MP_QSTR_display_bus , MP_ARG_REQUIRED | MP_ARG_OBJ },
95
96
{ MP_QSTR_start_sequence , MP_ARG_REQUIRED | MP_ARG_OBJ },
@@ -111,6 +112,7 @@ STATIC mp_obj_t displayio_epaperdisplay_make_new(const mp_obj_type_t *type, size
111
112
{ MP_QSTR_color_bits_inverted , MP_ARG_BOOL | MP_ARG_KW_ONLY , {.u_bool = false} },
112
113
{ MP_QSTR_highlight_color , MP_ARG_INT | MP_ARG_KW_ONLY , {.u_int = 0x000000 } },
113
114
{ MP_QSTR_refresh_display_command , MP_ARG_INT | MP_ARG_REQUIRED },
115
+ { MP_QSTR_refresh_time , MP_ARG_OBJ | MP_ARG_KW_ONLY , {.u_obj = MP_OBJ_NEW_SMALL_INT (40 )} },
114
116
{ MP_QSTR_busy_pin , MP_ARG_OBJ | MP_ARG_KW_ONLY , {.u_obj = mp_const_none } },
115
117
{ MP_QSTR_busy_state , MP_ARG_BOOL | MP_ARG_KW_ONLY , {.u_bool = true} },
116
118
{ MP_QSTR_seconds_per_frame , MP_ARG_OBJ | MP_ARG_KW_ONLY , {.u_obj = MP_OBJ_NEW_SMALL_INT (180 )} },
@@ -152,6 +154,7 @@ STATIC mp_obj_t displayio_epaperdisplay_make_new(const mp_obj_type_t *type, size
152
154
mp_raise_RuntimeError (translate ("Too many displays" ));
153
155
}
154
156
157
+ mp_float_t refresh_time = mp_obj_get_float (args [ARG_refresh_time ].u_obj );
155
158
mp_float_t seconds_per_frame = mp_obj_get_float (args [ARG_seconds_per_frame ].u_obj );
156
159
157
160
mp_int_t write_color_ram_command = NO_COMMAND ;
@@ -168,7 +171,7 @@ STATIC mp_obj_t displayio_epaperdisplay_make_new(const mp_obj_type_t *type, size
168
171
args [ARG_width ].u_int , args [ARG_height ].u_int , args [ARG_ram_width ].u_int , args [ARG_ram_height ].u_int , args [ARG_colstart ].u_int , args [ARG_rowstart ].u_int , rotation ,
169
172
args [ARG_set_column_window_command ].u_int , args [ARG_set_row_window_command ].u_int ,
170
173
args [ARG_set_current_column_command ].u_int , args [ARG_set_current_row_command ].u_int ,
171
- args [ARG_write_black_ram_command ].u_int , args [ARG_black_bits_inverted ].u_bool , write_color_ram_command , args [ARG_color_bits_inverted ].u_bool , highlight_color , args [ARG_refresh_display_command ].u_int ,
174
+ args [ARG_write_black_ram_command ].u_int , args [ARG_black_bits_inverted ].u_bool , write_color_ram_command , args [ARG_color_bits_inverted ].u_bool , highlight_color , args [ARG_refresh_display_command ].u_int , refresh_time ,
172
175
busy_pin , args [ARG_busy_state ].u_bool , seconds_per_frame , args [ARG_always_toggle_chip_select ].u_bool
173
176
);
174
177
0 commit comments