@@ -47,18 +47,21 @@ mp_obj_t VL53L5CX_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw
47
47
ARG_i2c,
48
48
ARG_addr,
49
49
ARG_firmware,
50
+ ARG_change_addr,
50
51
};
51
52
static const mp_arg_t allowed_args[] = {
52
53
{ MP_QSTR_i2c, MP_ARG_OBJ, {.u_obj = nullptr } },
53
54
{ MP_QSTR_addr, MP_ARG_INT, {.u_int = pimoroni::VL53L5CX::DEFAULT_ADDRESS} },
54
- { MP_QSTR_firmware, MP_ARG_OBJ, {.u_obj = nullptr } }
55
+ { MP_QSTR_firmware, MP_ARG_OBJ, {.u_obj = nullptr } },
56
+ { MP_QSTR_change_addr, MP_ARG_INT, {.u_int = 0 } }
55
57
};
56
58
57
59
// Parse args.
58
60
mp_arg_val_t args[MP_ARRAY_SIZE (allowed_args)];
59
61
mp_arg_parse_all_kw_array (n_args, n_kw, all_args, MP_ARRAY_SIZE (allowed_args), allowed_args, args);
60
62
61
63
int addr = args[ARG_addr].u_int ;
64
+ int change_addr = args[ARG_change_addr].u_int ;
62
65
63
66
self = mp_obj_malloc_with_finaliser (_VL53L5CX_obj_t, &VL53L5CX_type);
64
67
@@ -93,6 +96,12 @@ mp_obj_t VL53L5CX_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw
93
96
94
97
self->breakout = m_new_class (pimoroni::VL53L5CX, (pimoroni::I2C*)self->i2c ->i2c , (uint8_t *)bufinfo.buf , addr, self->configuration , self->motion_configuration );
95
98
99
+ if (change_addr != 0 ) {
100
+ if (!self->breakout ->set_i2c_address (change_addr)) {
101
+ mp_raise_msg (&mp_type_RuntimeError, MP_ERROR_TEXT (" VL53L5CX: set_i2c_address error" ));
102
+ }
103
+ }
104
+
96
105
if (!self->breakout ->init ()) {
97
106
mp_raise_msg (&mp_type_RuntimeError, MP_ERROR_TEXT (" VL53L5CX: init error" ));
98
107
}
@@ -141,12 +150,9 @@ mp_obj_t VL53L5CX_set_motion_distance(mp_obj_t self_in, mp_obj_t distance_min, m
141
150
}
142
151
143
152
mp_obj_t VL53L5CX_set_i2c_address (mp_obj_t self_in, mp_obj_t value) {
144
- _VL53L5CX_obj_t *self = MP_OBJ_TO_PTR2 (self_in, _VL53L5CX_obj_t);
145
- bool status = self->breakout ->set_i2c_address (mp_obj_get_int (value));
146
- if (!status) {
147
- mp_raise_msg (&mp_type_RuntimeError, MP_ERROR_TEXT (" VL53L5CX: set_i2c_address error" ));
148
- }
149
- return mp_const_none;
153
+ (void )self_in;
154
+ (void )value;
155
+ mp_raise_NotImplementedError (MP_ERROR_TEXT (" set_i2c_address: use VL53L5CX(..., \" change_addr=N\" , ...) instead." ));
150
156
}
151
157
152
158
mp_obj_t VL53L5CX_set_ranging_mode (mp_obj_t self_in, mp_obj_t value) {
0 commit comments