diff --git a/micropython/modules/plasma_2040/plasma_2040.c b/micropython/modules/plasma_2040/plasma_2040.c index c19ddefa..c606f0f9 100644 --- a/micropython/modules/plasma_2040/plasma_2040.c +++ b/micropython/modules/plasma_2040/plasma_2040.c @@ -52,6 +52,12 @@ const mp_obj_type_t PlasmaWS2812_type = { .locals_dict = (mp_obj_dict_t*)&PlasmaWS2812_locals_dict, }; +typedef struct _mp_obj_float_t { + mp_obj_base_t base; + mp_float_t value; +} mp_obj_float_t; +mp_obj_float_t shunt_resistor = {{&mp_type_float}, 0.015f}; + /***** Globals Table *****/ STATIC const mp_map_elem_t plasma_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_plasma) }, @@ -69,6 +75,9 @@ STATIC const mp_map_elem_t plasma_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_COLOR_ORDER_GBR), MP_ROM_INT(0x03) }, { MP_ROM_QSTR(MP_QSTR_COLOR_ORDER_BRG), MP_ROM_INT(0x04) }, { MP_ROM_QSTR(MP_QSTR_COLOR_ORDER_BGR), MP_ROM_INT(0x05) }, + + { MP_ROM_QSTR(MP_QSTR_SHUNT_RESISTOR), MP_ROM_PTR(&shunt_resistor) }, + { MP_ROM_QSTR(MP_QSTR_ADC_GAIN), MP_ROM_INT(50) }, }; STATIC MP_DEFINE_CONST_DICT(mp_module_plasma_globals, plasma_globals_table); diff --git a/micropython/modules_py/pimoroni.py b/micropython/modules_py/pimoroni.py index 0791c068..643b5caf 100644 --- a/micropython/modules_py/pimoroni.py +++ b/micropython/modules_py/pimoroni.py @@ -1,5 +1,21 @@ import time -from machine import Pin, PWM +from machine import Pin, PWM, ADC + + +class Analog: + def __init__(self, pin, amplifier_gain=1, resistor=0): + self.gain = amplifier_gain + self.resistor = resistor + self.pin = ADC(pin) + + def read_voltage(self): + return self.pin.read_u16() * 3.3 / 65535 / self.gain + + def read_current(self): + if self.resistor > 0: + return self.read_voltage() / self.resistor + else: + return self.read_voltage() class Button: