Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self, pin=None, pull_up=True, active_state=None, bounce_time=None,
hold_time=1, hold_repeat=False, pin_factory=None):
super(Button, self).__init__(
pin, pull_up=pull_up, active_state=active_state,
bounce_time=bounce_time, pin_factory=pin_factory)
self.hold_time = hold_time
self.hold_repeat = hold_repeat
@property
def value(self):
"""
Returns 1 if the button is currently pressed, and 0 if it is not.
"""
return super(Button, self).value
Button.is_pressed = Button.is_active
Button.pressed_time = Button.active_time
Button.when_pressed = Button.when_activated
Button.when_released = Button.when_deactivated
Button.wait_for_press = Button.wait_for_active
Button.wait_for_release = Button.wait_for_inactive
class LineSensor(SmoothedInputDevice):
"""
Extends :class:`SmoothedInputDevice` and represents a single pin line
sensor like the TCRT5000 infra-red proximity sensor found in the `CamJam #3
EduKit`_.
A typical line sensor has a small circuit board with three pins: VCC, GND,
and OUT. VCC should be connected to a 3V3 pin, GND to one of the ground
pins, and finally OUT to the GPIO specified as the value of the *pin*
self.hold_time = hold_time
self.hold_repeat = hold_repeat
@property
def value(self):
"""
Returns 1 if the button is currently pressed, and 0 if it is not.
"""
return super(Button, self).value
Button.is_pressed = Button.is_active
Button.pressed_time = Button.active_time
Button.when_pressed = Button.when_activated
Button.when_released = Button.when_deactivated
Button.wait_for_press = Button.wait_for_active
Button.wait_for_release = Button.wait_for_inactive
class LineSensor(SmoothedInputDevice):
"""
Extends :class:`SmoothedInputDevice` and represents a single pin line
sensor like the TCRT5000 infra-red proximity sensor found in the `CamJam #3
EduKit`_.
A typical line sensor has a small circuit board with three pins: VCC, GND,
and OUT. VCC should be connected to a 3V3 pin, GND to one of the ground
pins, and finally OUT to the GPIO specified as the value of the *pin*
parameter in the constructor.
The following code will print a line of text indicating when the sensor
detects a line, or stops detecting a line::
def __init__(self, pwm=False, pin_factory=None):
super(TrafficHat, self).__init__(
lights=TrafficLights(24, 23, 22, pwm=pwm, pin_factory=pin_factory),
buzzer=Buzzer(5, pin_factory=pin_factory),
button=Button(25, pin_factory=pin_factory),
_order=('lights', 'buzzer', 'button'),
pin_factory=pin_factory
)
hold_time=1, hold_repeat=False, pin_factory=None):
super(Button, self).__init__(
pin, pull_up=pull_up, active_state=active_state,
bounce_time=bounce_time, pin_factory=pin_factory)
self.hold_time = hold_time
self.hold_repeat = hold_repeat
@property
def value(self):
"""
Returns 1 if the button is currently pressed, and 0 if it is not.
"""
return super(Button, self).value
Button.is_pressed = Button.is_active
Button.pressed_time = Button.active_time
Button.when_pressed = Button.when_activated
Button.when_released = Button.when_deactivated
Button.wait_for_press = Button.wait_for_active
Button.wait_for_release = Button.wait_for_inactive
class LineSensor(SmoothedInputDevice):
"""
Extends :class:`SmoothedInputDevice` and represents a single pin line
sensor like the TCRT5000 infra-red proximity sensor found in the `CamJam #3
EduKit`_.
A typical line sensor has a small circuit board with three pins: VCC, GND,
and OUT. VCC should be connected to a 3V3 pin, GND to one of the ground
pins, and finally OUT to the GPIO specified as the value of the *pin*
parameter in the constructor.
bounce_time=bounce_time, pin_factory=pin_factory)
self.hold_time = hold_time
self.hold_repeat = hold_repeat
@property
def value(self):
"""
Returns 1 if the button is currently pressed, and 0 if it is not.
"""
return super(Button, self).value
Button.is_pressed = Button.is_active
Button.pressed_time = Button.active_time
Button.when_pressed = Button.when_activated
Button.when_released = Button.when_deactivated
Button.wait_for_press = Button.wait_for_active
Button.wait_for_release = Button.wait_for_inactive
class LineSensor(SmoothedInputDevice):
"""
Extends :class:`SmoothedInputDevice` and represents a single pin line
sensor like the TCRT5000 infra-red proximity sensor found in the `CamJam #3
EduKit`_.
A typical line sensor has a small circuit board with three pins: VCC, GND,
and OUT. VCC should be connected to a 3V3 pin, GND to one of the ground
pins, and finally OUT to the GPIO specified as the value of the *pin*
parameter in the constructor.
The following code will print a line of text indicating when the sensor
detects a line, or stops detecting a line::
(9, 10, 15),
(5, 11, 26),
(13, 6, 18),
)
pin_factory = kwargs.pop('pin_factory', None)
if len(labels) == 0:
labels = self.default_labels
elif len(labels) > len(pins):
raise ValueError("StatusBoard doesn't support more than five labels")
dup, count = Counter(labels).most_common(1)[0]
if count > 1:
raise ValueError("Duplicate label %s" % dup)
super(StatusBoard, self).__init__(
_order=labels, pin_factory=pin_factory, **{
label: CompositeOutputDevice(
button=Button(button, pin_factory=pin_factory),
lights=LEDBoard(
red=red, green=green, _order=('red', 'green'),
pin_factory=pin_factory, **kwargs
), _order=('button', 'lights'), pin_factory=pin_factory
)
for (green, red, button), label in zip(pins, labels)
}
def __init__(self, pwm=False, pin_factory=None):
super(Pibrella, self).__init__(
lights=TrafficLights(red=27, amber=17, green=4, pwm=pwm,
pin_factory=pin_factory),
button=Button(11, pull_up=False, pin_factory=pin_factory),
buzzer=TonalBuzzer(18, pin_factory=pin_factory),
_order=('lights', 'button', 'buzzer'),
pin_factory=pin_factory
)
InputPins = namedtuple('InputPins', ['a', 'b', 'c', 'd'])
OutputPins = namedtuple('OutputPins', ['e', 'f', 'g', 'h'])
self.inputs = InputPins(a=9, b=7, c=8, d=10)
self.outputs = OutputPins(e=22, f=23, g=24, h=25)
bounce_time = kwargs.pop('bounce_time', None)
hold_time = kwargs.pop('hold_time', 1)
hold_repeat = kwargs.pop('hold_repeat', False)
pin_factory = kwargs.pop('pin_factory', None)
order = kwargs.pop('_order', None)
super(ButtonBoard, self).__init__(
*(
Button(pin, pull_up=pull_up, active_state=active_state,
bounce_time=bounce_time, hold_time=hold_time,
hold_repeat=hold_repeat)
for pin in args
),
_order=order,
pin_factory=pin_factory,
**{
name: Button(pin, pull_up=pull_up, active_state=active_state,
bounce_time=bounce_time, hold_time=hold_time,
hold_repeat=hold_repeat)
for name, pin in kwargs.items()
}
)
if len(self) == 0:
raise GPIOPinMissing('No pins given')
def get_new_handler(device):
def fire_both_events(ticks, state):
device._fire_events(ticks, device._state_to_value(state))
self._fire_events(ticks, self.value)
return fire_both_events
# _handlers only exists to ensure that we keep a reference to the
# generated fire_both_events handler for each Button (remember that
# pin.when_changed only keeps a weak reference to handlers)
self._handlers = tuple(get_new_handler(device) for device in self)