Skip to content

Commit

Permalink
Add button and examples
Browse files Browse the repository at this point in the history
  • Loading branch information
irvyncornejo committed Feb 5, 2023
1 parent f161735 commit d26e321
Show file tree
Hide file tree
Showing 6 changed files with 95 additions and 31 deletions.
12 changes: 12 additions & 0 deletions raspberry-pico/rpi-gpio-pico-examples/inputs-examples.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from gpiopico import Led, Button
from utime import sleep

if __name__=='__main__':
led = Led(pin=0, inverted_logic=True)
button = Button(pin=1)

button.when_pressed = led.on
button.on_hold = led.off

while True:
button.check_state()
15 changes: 15 additions & 0 deletions raspberry-pico/rpi-gpio-pico-examples/outputs-examples.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from gpiopico import Led
from utime import sleep

if __name__=='__main__':
led = Led(pin=0, inverted_logic=True)#common anode

for _ in range(4):
led.on()
sleep(1)
led.off()
sleep(1)

for pwm in range(256):
led.pwm_value(pwm)#0-255
sleep(0.2)
37 changes: 32 additions & 5 deletions raspberry-pico/rpi-gpio-pico/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,43 @@
- LM35
### Ouput Devices
- LED
- Reley
- Relay
- Solid state relay
- Motor DC
- RGB
- Servo motor

- Servomotor

### Blink
```python
from gpiopico import Led
from utime import sleep

if __name__=='__main__':
led = Led(pin=0, inverted_logic=True)#common anode

for _ in range(4):
led.on()
sleep(1)
led.off()
sleep(1)

for pwm in range(256):
led.pwm_value(pwm)#0-255
sleep(0.2)

```
### Button
```python
from gpiopico import Led, Button
from utime import sleep

led1 = Led(2, True)
led1.change_pwm(125) #value 0-255
if __name__=='__main__':
led = Led(pin=0, inverted_logic=True)#common anode
button = Button(pin=1)

button.when_pressed = led.on
button.on_hold = led.off

while True:
button.check_state()
```
53 changes: 30 additions & 23 deletions raspberry-pico/rpi-gpio-pico/gpiopico/input_devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,33 +164,52 @@ class Button:
def __init__(
self,
pin: int,
invert_logic: bool = False,
show_value: bool = False
) -> None:
self._input = Pin(pin, Pin.IN, Pin.PULL_UP)
self._when_pressed = None
self._on_hold = None
self._show_value = show_value
self._value = 1 if not invert_logic else 0


@property
def when_pressed(self):
return self._when_pressed

@when_pressed.setter
def when_pressed(self, callback):
@staticmethod
def _validate_callback(callback):
if (
type(callback).__name__ == 'function' or
type(callback).__name__ == 'bound_method'
):
self._when_pressed = callback
return
else:
raise ValueError('callback will be a function or bound_method')


@property
def when_pressed(self):
return self._when_pressed

@when_pressed.setter
def when_pressed(self, callback):
self._validate_callback(callback)
self._when_pressed = callback

@property
def on_hold(self):
return self._on_hold

@on_hold.setter
def on_hold(self, callback):
self._validate_callback(callback)
self._on_hold = callback

def check_state(self):
_value = self._input.value()
if self._when_pressed and _value == 0:
self._when_pressed
if self._when_pressed and _value == self._value:
self._when_pressed()
else:
if self._on_hold: self._on_hold()
(print(_value) if self._show_value else None)
sleep(0.3)
sleep(0.1)

class PIR:
def __init__(
Expand Down Expand Up @@ -232,15 +251,3 @@ def active_motion_detection(self):
(print(self._value) if self._show_value else None)
sleep(0.3)
return self._value


class Red:
def test(self):
print('Algo se movió')

if __name__=='__main__':
sensor_pir = PIR(2)
t = Red().test
sensor_pir.when_motion_is_detected = t
while True:
sensor_pir.active_motion_detection()
7 changes: 5 additions & 2 deletions raspberry-pico/rpi-gpio-pico/gpiopico/output_devices.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ def pwm_value(self, pwm_value: int, limit_range=None) -> None:
self._range_map[1]
)
)
print(_pwm_value)
_pwm_value = (
_pwm_value if self._inverted_logic else _pwm_value
)
Expand Down Expand Up @@ -170,9 +169,13 @@ def stop(self) -> None:
sleep(0.5)

class Car:
#TODO Create methods
"""Basic Car with two motors
"""
def __init__(self, motor_a:tuple, motor_b:tuple) -> None:
self._motor_a = Motor(motor_a[0], motor_a[1])
self._motor_b = Motor(motor_b[0], motor_b[1])
#TODO Create methods

class RGB:
#TODO Define class
pass
2 changes: 1 addition & 1 deletion raspberry-pico/rpi-gpio-pico/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
this_directory = Path(__file__).parent
long_description = (this_directory / "README.md").read_text()

VERSION = '0.0.3'
VERSION = '0.0.4'
DESCRIPTION = 'Easy way to connect hardware and use gpio in raspberry pico'
PACKAGE_NAME = 'gpiopico'
AUTHOR = 'Irvyn Cornejo'
Expand Down

0 comments on commit d26e321

Please sign in to comment.