mirror of
https://github.com/esphome/esphome.git
synced 2024-11-22 15:08:10 +01:00
Add change i2c address and allow multi conf for TB6612FNG (#5492)
This commit is contained in:
parent
26f12cd3bb
commit
e42c51a222
2 changed files with 34 additions and 2 deletions
|
@ -8,12 +8,15 @@ from esphome.const import (
|
||||||
CONF_CHANNEL,
|
CONF_CHANNEL,
|
||||||
CONF_SPEED,
|
CONF_SPEED,
|
||||||
CONF_DIRECTION,
|
CONF_DIRECTION,
|
||||||
|
CONF_ADDRESS,
|
||||||
)
|
)
|
||||||
|
|
||||||
DEPENDENCIES = ["i2c"]
|
DEPENDENCIES = ["i2c"]
|
||||||
|
|
||||||
CODEOWNERS = ["@max246"]
|
CODEOWNERS = ["@max246"]
|
||||||
|
|
||||||
|
MULTI_CONF = True
|
||||||
|
|
||||||
grove_tb6612fng_ns = cg.esphome_ns.namespace("grove_tb6612fng")
|
grove_tb6612fng_ns = cg.esphome_ns.namespace("grove_tb6612fng")
|
||||||
GROVE_TB6612FNG = grove_tb6612fng_ns.class_(
|
GROVE_TB6612FNG = grove_tb6612fng_ns.class_(
|
||||||
"GroveMotorDriveTB6612FNG", cg.Component, i2c.I2CDevice
|
"GroveMotorDriveTB6612FNG", cg.Component, i2c.I2CDevice
|
||||||
|
@ -33,6 +36,9 @@ GROVETB6612FNGMotorStandbyAction = grove_tb6612fng_ns.class_(
|
||||||
GROVETB6612FNGMotorNoStandbyAction = grove_tb6612fng_ns.class_(
|
GROVETB6612FNGMotorNoStandbyAction = grove_tb6612fng_ns.class_(
|
||||||
"GROVETB6612FNGMotorNoStandbyAction", automation.Action
|
"GROVETB6612FNGMotorNoStandbyAction", automation.Action
|
||||||
)
|
)
|
||||||
|
GROVETB6612FNGMotorChangeAddressAction = grove_tb6612fng_ns.class_(
|
||||||
|
"GROVETB6612FNGMotorChangeAddressAction", automation.Action
|
||||||
|
)
|
||||||
|
|
||||||
DIRECTION_TYPE = {
|
DIRECTION_TYPE = {
|
||||||
"FORWARD": 1,
|
"FORWARD": 1,
|
||||||
|
@ -150,3 +156,22 @@ async def grove_tb6612fng_no_standby_to_code(config, action_id, template_arg, ar
|
||||||
await cg.register_parented(var, config[CONF_ID])
|
await cg.register_parented(var, config[CONF_ID])
|
||||||
|
|
||||||
return var
|
return var
|
||||||
|
|
||||||
|
|
||||||
|
@automation.register_action(
|
||||||
|
"grove_tb6612fng.change_address",
|
||||||
|
GROVETB6612FNGMotorChangeAddressAction,
|
||||||
|
cv.Schema(
|
||||||
|
{
|
||||||
|
cv.Required(CONF_ID): cv.use_id(GROVE_TB6612FNG),
|
||||||
|
cv.Required(CONF_ADDRESS): cv.i2c_address,
|
||||||
|
}
|
||||||
|
),
|
||||||
|
)
|
||||||
|
async def grove_tb6612fng_change_address_to_code(config, action_id, template_arg, args):
|
||||||
|
var = cg.new_Pvariable(action_id, template_arg)
|
||||||
|
await cg.register_parented(var, config[CONF_ID])
|
||||||
|
|
||||||
|
template_channel = await cg.templatable(config[CONF_ADDRESS], args, int)
|
||||||
|
cg.add(var.set_address(template_channel))
|
||||||
|
return var
|
||||||
|
|
|
@ -84,8 +84,7 @@ class GroveMotorDriveTB6612FNG : public Component, public i2c::I2CDevice {
|
||||||
*************************************************************/
|
*************************************************************/
|
||||||
void set_i2c_addr(uint8_t addr);
|
void set_i2c_addr(uint8_t addr);
|
||||||
|
|
||||||
/*************************************************************
|
/***********************************change_address
|
||||||
Description
|
|
||||||
Drive a motor.
|
Drive a motor.
|
||||||
Parameter
|
Parameter
|
||||||
chl: MOTOR_CHA or MOTOR_CHB
|
chl: MOTOR_CHA or MOTOR_CHB
|
||||||
|
@ -204,5 +203,13 @@ class GROVETB6612FNGMotorNoStandbyAction : public Action<Ts...>, public Parented
|
||||||
void play(Ts... x) override { this->parent_->not_standby(); }
|
void play(Ts... x) override { this->parent_->not_standby(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename... Ts>
|
||||||
|
class GROVETB6612FNGMotorChangeAddressAction : public Action<Ts...>, public Parented<GroveMotorDriveTB6612FNG> {
|
||||||
|
public:
|
||||||
|
TEMPLATABLE_VALUE(uint8_t, address)
|
||||||
|
|
||||||
|
void play(Ts... x) override { this->parent_->set_i2c_addr(this->address_.value(x...)); }
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace grove_tb6612fng
|
} // namespace grove_tb6612fng
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
|
Loading…
Reference in a new issue