@@ -166,6 +166,17 @@ mp_obj_t microbit_pin_is_touched(mp_obj_t self_in) {
166
166
}
167
167
MP_DEFINE_CONST_FUN_OBJ_1 (microbit_pin_is_touched_obj , microbit_pin_is_touched );
168
168
169
+ mp_obj_t microbit_pin_set_touch_mode (mp_obj_t self_in , mp_obj_t mode_in ) {
170
+ microbit_pin_obj_t * self = (microbit_pin_obj_t * )self_in ;
171
+ const microbit_pinmode_t * mode = microbit_pin_get_mode (self );
172
+ if (mode != microbit_pin_mode_touch && mode != microbit_pin_mode_button ) {
173
+ microbit_obj_pin_acquire (self , microbit_pin_mode_touch );
174
+ }
175
+ microbit_hal_pin_set_touch_mode (self -> name , mp_obj_get_int (mode_in ));
176
+ return mp_const_none ;
177
+ }
178
+ MP_DEFINE_CONST_FUN_OBJ_2 (microbit_pin_set_touch_mode_obj , microbit_pin_set_touch_mode );
179
+
169
180
STATIC mp_obj_t microbit_pin_speaker_disable (mp_obj_t self_in ) {
170
181
(void )self_in ;
171
182
microbit_pin_audio_speaker_enable (false);
@@ -185,17 +196,21 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(microbit_pin_speaker_enable_obj, microbit_pin_s
185
196
{ MP_ROM_QSTR(MP_QSTR_PULL_DOWN), MP_ROM_INT(MICROBIT_HAL_PIN_PULL_DOWN) }, \
186
197
{ MP_ROM_QSTR(MP_QSTR_NO_PULL), MP_ROM_INT(MICROBIT_HAL_PIN_PULL_NONE) }
187
198
199
+ #define TOUCH_CONSTANTS \
200
+ { MP_ROM_QSTR(MP_QSTR_RESISTIVE), MP_ROM_INT(MICROBIT_HAL_PIN_TOUCH_RESISTIVE) }, \
201
+ { MP_ROM_QSTR(MP_QSTR_CAPACITIVE), MP_ROM_INT(MICROBIT_HAL_PIN_TOUCH_CAPACITIVE) }
202
+
188
203
STATIC const mp_rom_map_elem_t microbit_dig_pin_locals_dict_table [] = {
189
204
{ MP_ROM_QSTR (MP_QSTR_write_digital ), MP_ROM_PTR (& microbit_pin_write_digital_obj ) },
190
205
{ MP_ROM_QSTR (MP_QSTR_read_digital ), MP_ROM_PTR (& microbit_pin_read_digital_obj ) },
191
206
{ MP_ROM_QSTR (MP_QSTR_write_analog ), MP_ROM_PTR (& microbit_pin_write_analog_obj ) },
192
207
{ MP_ROM_QSTR (MP_QSTR_set_analog_period ), MP_ROM_PTR (& microbit_pin_set_analog_period_obj ) },
193
208
{ MP_ROM_QSTR (MP_QSTR_set_analog_period_microseconds ), MP_ROM_PTR (& microbit_pin_set_analog_period_microseconds_obj ) },
194
209
{ MP_ROM_QSTR (MP_QSTR_get_analog_period_microseconds ), MP_ROM_PTR (& microbit_pin_get_analog_period_microseconds_obj ) },
195
- PULL_CONSTANTS ,
196
210
{ MP_ROM_QSTR (MP_QSTR_get_pull ), MP_ROM_PTR (& microbit_pin_get_pull_obj ) },
197
211
{ MP_ROM_QSTR (MP_QSTR_set_pull ), MP_ROM_PTR (& microbit_pin_set_pull_obj ) },
198
212
{ MP_ROM_QSTR (MP_QSTR_get_mode ), MP_ROM_PTR (& microbit_pin_get_mode_obj ) },
213
+ PULL_CONSTANTS ,
199
214
};
200
215
STATIC MP_DEFINE_CONST_DICT (microbit_dig_pin_locals_dict , microbit_dig_pin_locals_dict_table );
201
216
@@ -213,10 +228,10 @@ STATIC const mp_rom_map_elem_t microbit_ann_pin_locals_dict_table[] = {
213
228
{ MP_ROM_QSTR (MP_QSTR_set_analog_period ), MP_ROM_PTR (& microbit_pin_set_analog_period_obj ) },
214
229
{ MP_ROM_QSTR (MP_QSTR_set_analog_period_microseconds ), MP_ROM_PTR (& microbit_pin_set_analog_period_microseconds_obj ) },
215
230
{ MP_ROM_QSTR (MP_QSTR_get_analog_period_microseconds ), MP_ROM_PTR (& microbit_pin_get_analog_period_microseconds_obj ) },
216
- PULL_CONSTANTS ,
217
231
{ MP_ROM_QSTR (MP_QSTR_get_pull ), MP_ROM_PTR (& microbit_pin_get_pull_obj ) },
218
232
{ MP_ROM_QSTR (MP_QSTR_set_pull ), MP_ROM_PTR (& microbit_pin_set_pull_obj ) },
219
233
{ MP_ROM_QSTR (MP_QSTR_get_mode ), MP_ROM_PTR (& microbit_pin_get_mode_obj ) },
234
+ PULL_CONSTANTS ,
220
235
};
221
236
STATIC MP_DEFINE_CONST_DICT (microbit_ann_pin_locals_dict , microbit_ann_pin_locals_dict_table );
222
237
@@ -235,10 +250,12 @@ STATIC const mp_rom_map_elem_t microbit_touch_pin_locals_dict_table[] = {
235
250
{ MP_ROM_QSTR (MP_QSTR_set_analog_period_microseconds ), MP_ROM_PTR (& microbit_pin_set_analog_period_microseconds_obj ) },
236
251
{ MP_ROM_QSTR (MP_QSTR_get_analog_period_microseconds ), MP_ROM_PTR (& microbit_pin_get_analog_period_microseconds_obj ) },
237
252
{ MP_ROM_QSTR (MP_QSTR_is_touched ), MP_ROM_PTR (& microbit_pin_is_touched_obj ) },
238
- PULL_CONSTANTS ,
239
253
{ MP_ROM_QSTR (MP_QSTR_get_pull ), MP_ROM_PTR (& microbit_pin_get_pull_obj ) },
240
254
{ MP_ROM_QSTR (MP_QSTR_set_pull ), MP_ROM_PTR (& microbit_pin_set_pull_obj ) },
241
255
{ MP_ROM_QSTR (MP_QSTR_get_mode ), MP_ROM_PTR (& microbit_pin_get_mode_obj ) },
256
+ { MP_ROM_QSTR (MP_QSTR_set_touch_mode ), MP_ROM_PTR (& microbit_pin_set_touch_mode_obj ) },
257
+ PULL_CONSTANTS ,
258
+ TOUCH_CONSTANTS ,
242
259
};
243
260
STATIC MP_DEFINE_CONST_DICT (microbit_touch_pin_locals_dict , microbit_touch_pin_locals_dict_table );
244
261
@@ -250,6 +267,8 @@ const mp_obj_type_t microbit_touch_pin_type = {
250
267
251
268
STATIC const mp_rom_map_elem_t microbit_touch_only_pin_locals_dict_table [] = {
252
269
{ MP_ROM_QSTR (MP_QSTR_is_touched ), MP_ROM_PTR (& microbit_pin_is_touched_obj ) },
270
+ { MP_ROM_QSTR (MP_QSTR_set_touch_mode ), MP_ROM_PTR (& microbit_pin_set_touch_mode_obj ) },
271
+ TOUCH_CONSTANTS ,
253
272
};
254
273
STATIC MP_DEFINE_CONST_DICT (microbit_touch_only_pin_locals_dict , microbit_touch_only_pin_locals_dict_table );
255
274
0 commit comments