You've already forked uiflow-micropython
mirror of
https://github.com/m5stack/uiflow-micropython.git
synced 2026-05-20 10:39:27 -07:00
251ea8d0e0
Signed-off-by: lbuque <1102390310@qq.com>
46 lines
1.5 KiB
C
46 lines
1.5 KiB
C
// SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <sys/time.h>
|
|
|
|
#include "py/runtime.h"
|
|
|
|
static mp_obj_t m5_utils_remap(size_t n_args, const mp_obj_t *args) {
|
|
mp_float_t x = mp_obj_get_float(args[0]);
|
|
mp_float_t in_min = mp_obj_get_float(args[1]);
|
|
mp_float_t in_max = mp_obj_get_float(args[2]);
|
|
mp_float_t out_min = mp_obj_get_float(args[3]);
|
|
mp_float_t out_max = mp_obj_get_float(args[4]);
|
|
|
|
if (in_max == in_min) {
|
|
// 抛出异常或返回错误
|
|
mp_raise_ValueError(MP_ERROR_TEXT("Input range cannot be zero"));
|
|
return mp_const_none;
|
|
}
|
|
|
|
mp_float_t result = (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
|
|
return mp_obj_new_float(result);
|
|
}
|
|
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(m5_utils_remap_obj, 5, 5, m5_utils_remap);
|
|
|
|
extern const mp_obj_type_t mp_m5utils_timer_type;
|
|
|
|
static const mp_rom_map_elem_t m5utils_module_globals_table[] = {
|
|
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_m5utils) },
|
|
|
|
{ MP_ROM_QSTR(MP_QSTR_remap), MP_ROM_PTR(&m5_utils_remap_obj) },
|
|
{ MP_ROM_QSTR(MP_QSTR_Timer), MP_ROM_PTR(&mp_m5utils_timer_type) },
|
|
};
|
|
|
|
static MP_DEFINE_CONST_DICT(m5utils_module_globals, m5utils_module_globals_table);
|
|
|
|
const mp_obj_module_t m5utils_module = {
|
|
.base = { &mp_type_module },
|
|
.globals = (mp_obj_dict_t *)&m5utils_module_globals,
|
|
};
|
|
|
|
MP_REGISTER_MODULE(MP_QSTR_m5utils, m5utils_module);
|