kopia lustrzana https://github.com/pimoroni/pimoroni-pico
Add set_pixels() function
rodzic
5a5e61529a
commit
3ef0ddfecc
|
@ -10,6 +10,7 @@ We've included helper functions to handle every aspect of drawing to the matrix
|
|||
- [get_width](#get_width)
|
||||
- [get_height](#get_height)
|
||||
- [set_pixel](#set_pixel)
|
||||
- [set_pixels](#set_pixels)
|
||||
- [update](#update)
|
||||
- [clear](#clear)
|
||||
- [is_pressed](#is_pressed)
|
||||
|
@ -73,6 +74,17 @@ This function sets a pixel at the `x` and `y` coordinates to a brightness level
|
|||
picoscroll.set_pixel(x, y, l)
|
||||
```
|
||||
|
||||
### set_pixels
|
||||
|
||||
This function sets all pixel at once from a `bytearray` image indexed
|
||||
as `y * picoscroll.get_width() + x`, containing brightness levels
|
||||
between 0 and 255. Changes will not be visible until `update()` is called.
|
||||
|
||||
```python
|
||||
image = bytearray(0 for j in range(width * height))
|
||||
picoscroll.set_pixels(image)
|
||||
```
|
||||
|
||||
### update
|
||||
|
||||
Pushes pixel data from the Pico to the Scroll Pack. Until this function is called any `set_pixel` or `clear` calls won't have any visible effect.
|
||||
|
|
|
@ -20,6 +20,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_0(picoscroll_get_width_obj, picoscroll_get_width)
|
|||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(picoscroll_get_height_obj, picoscroll_get_height);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(picoscroll_update_obj, picoscroll_update);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(picoscroll_set_pixel_obj, picoscroll_set_pixel);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(picoscroll_set_pixels_obj, picoscroll_set_pixels);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(picoscroll_clear_obj, picoscroll_clear);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(picoscroll_is_pressed_obj, picoscroll_is_pressed);
|
||||
|
||||
|
@ -31,6 +32,7 @@ STATIC const mp_map_elem_t picoscroll_globals_table[] = {
|
|||
{ MP_ROM_QSTR(MP_QSTR_get_height), MP_ROM_PTR(&picoscroll_get_height_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_update), MP_ROM_PTR(&picoscroll_update_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_set_pixel), MP_ROM_PTR(&picoscroll_set_pixel_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_set_pixels), MP_ROM_PTR(&picoscroll_set_pixels_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_clear), MP_ROM_PTR(&picoscroll_clear_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_is_pressed), MP_ROM_PTR(&picoscroll_is_pressed_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BUTTON_A), MP_ROM_INT(BUTTON_A) },
|
||||
|
@ -49,4 +51,4 @@ const mp_obj_module_t picoscroll_user_cmodule = {
|
|||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
MP_REGISTER_MODULE(MP_QSTR_picoscroll, picoscroll_user_cmodule, MODULE_PICOSCROLL_ENABLED);
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -58,6 +58,25 @@ mp_obj_t picoscroll_set_pixel(mp_obj_t x_obj, mp_obj_t y_obj, mp_obj_t v_obj) {
|
|||
return mp_const_none;
|
||||
}
|
||||
|
||||
mp_obj_t picoscroll_set_pixels(mp_obj_t image_obj) {
|
||||
if(scroll != nullptr) {
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(image_obj, &bufinfo, MP_BUFFER_RW);
|
||||
unsigned char * values = (unsigned char *) bufinfo.buf;
|
||||
|
||||
for (int y = 0; y < PicoScroll::HEIGHT; y++) {
|
||||
for (int x = 0; x < PicoScroll::WIDTH; x++) {
|
||||
int val = values[y * PicoScroll::WIDTH + x];
|
||||
scroll->set_pixel(x, y, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
mp_raise_msg(&mp_type_RuntimeError, NOT_INITIALISED_MSG);
|
||||
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
mp_obj_t picoscroll_clear() {
|
||||
if(scroll != nullptr)
|
||||
scroll->clear();
|
||||
|
@ -98,4 +117,4 @@ mp_obj_t picoscroll_is_pressed(mp_obj_t button_obj) {
|
|||
|
||||
return buttonPressed ? mp_const_true : mp_const_false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,5 +7,6 @@ extern mp_obj_t picoscroll_get_width();
|
|||
extern mp_obj_t picoscroll_get_height();
|
||||
extern mp_obj_t picoscroll_update();
|
||||
extern mp_obj_t picoscroll_set_pixel(mp_obj_t x_obj, mp_obj_t y_obj, mp_obj_t v_obj);
|
||||
extern mp_obj_t picoscroll_set_pixels(mp_obj_t image_obj);
|
||||
extern mp_obj_t picoscroll_clear();
|
||||
extern mp_obj_t picoscroll_is_pressed(mp_obj_t button_obj);
|
||||
extern mp_obj_t picoscroll_is_pressed(mp_obj_t button_obj);
|
||||
|
|
Ładowanie…
Reference in New Issue