mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 13:34:54 +01:00
ULN2003 Support (#304)
This commit is contained in:
parent
38c24fd100
commit
3f4bba57f4
1 changed files with 55 additions and 0 deletions
55
esphomeyaml/components/stepper/uln2003.py
Normal file
55
esphomeyaml/components/stepper/uln2003.py
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
import voluptuous as vol
|
||||||
|
|
||||||
|
from esphomeyaml import pins
|
||||||
|
from esphomeyaml.components import stepper
|
||||||
|
import esphomeyaml.config_validation as cv
|
||||||
|
from esphomeyaml.const import CONF_ID, CONF_PIN_A, CONF_PIN_B, CONF_PIN_C, CONF_PIN_D, \
|
||||||
|
CONF_SLEEP_WHEN_DONE, CONF_STEP_MODE
|
||||||
|
from esphomeyaml.cpp_generator import Pvariable, add
|
||||||
|
from esphomeyaml.cpp_helpers import gpio_output_pin_expression, setup_component
|
||||||
|
from esphomeyaml.cpp_types import App, Component
|
||||||
|
|
||||||
|
ULN2003StepMode = stepper.stepper_ns.enum('ULN2003StepMode')
|
||||||
|
|
||||||
|
STEP_MODES = {
|
||||||
|
'FULL_STEP': ULN2003StepMode.ULN2003_STEP_MODE_FULL_STEP,
|
||||||
|
'HALF_STEP': ULN2003StepMode.ULN2003_STEP_MODE_HALF_STEP,
|
||||||
|
'WAVE_DRIVE': ULN2003StepMode.ULN2003_STEP_MODE_WAVE_DRIVE,
|
||||||
|
}
|
||||||
|
|
||||||
|
ULN2003 = stepper.stepper_ns.class_('ULN2003', stepper.Stepper, Component)
|
||||||
|
|
||||||
|
PLATFORM_SCHEMA = stepper.STEPPER_PLATFORM_SCHEMA.extend({
|
||||||
|
vol.Required(CONF_ID): cv.declare_variable_id(ULN2003),
|
||||||
|
vol.Required(CONF_PIN_A): pins.gpio_output_pin_schema,
|
||||||
|
vol.Required(CONF_PIN_B): pins.gpio_output_pin_schema,
|
||||||
|
vol.Required(CONF_PIN_C): pins.gpio_output_pin_schema,
|
||||||
|
vol.Required(CONF_PIN_D): pins.gpio_output_pin_schema,
|
||||||
|
vol.Optional(CONF_SLEEP_WHEN_DONE): cv.boolean,
|
||||||
|
vol.Optional(CONF_STEP_MODE): cv.one_of(*STEP_MODES, upper=True, space='_')
|
||||||
|
}).extend(cv.COMPONENT_SCHEMA.schema)
|
||||||
|
|
||||||
|
|
||||||
|
def to_code(config):
|
||||||
|
for pin_a in gpio_output_pin_expression(config[CONF_PIN_A]):
|
||||||
|
yield
|
||||||
|
for pin_b in gpio_output_pin_expression(config[CONF_PIN_B]):
|
||||||
|
yield
|
||||||
|
for pin_c in gpio_output_pin_expression(config[CONF_PIN_C]):
|
||||||
|
yield
|
||||||
|
for pin_d in gpio_output_pin_expression(config[CONF_PIN_D]):
|
||||||
|
yield
|
||||||
|
rhs = App.make_uln2003(pin_a, pin_b, pin_c, pin_d)
|
||||||
|
uln = Pvariable(config[CONF_ID], rhs)
|
||||||
|
|
||||||
|
if CONF_SLEEP_WHEN_DONE in config:
|
||||||
|
add(uln.set_sleep_when_done(config[CONF_SLEEP_WHEN_DONE]))
|
||||||
|
|
||||||
|
if CONF_STEP_MODE in config:
|
||||||
|
add(uln.set_step_mode(STEP_MODES[config[CONF_STEP_MODE]]))
|
||||||
|
|
||||||
|
stepper.setup_stepper(uln, config)
|
||||||
|
setup_component(uln, config)
|
||||||
|
|
||||||
|
|
||||||
|
BUILD_FLAGS = '-DUSE_ULN2003'
|
Loading…
Reference in a new issue