42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from time import sleep
|
|
from adafruit_ble.uart_server import UARTServer
|
|
from adafruit_bluefruit_connect.packet import Packet
|
|
from adafruit_bluefruit_connect.button_packet import ButtonPacket
|
|
from adafruit_bluefruit_connect.color_packet import ColorPacket
|
|
from board import A0, D13
|
|
from analogio import AnalogIn
|
|
from digitalio import DigitalInOut, Direction
|
|
|
|
led = AnalogIn(A0) # Initialize blue LED light detector
|
|
|
|
solenoid = DigitalInOut(D13) # Initialize solenoid
|
|
solenoid.direction = Direction.OUTPUT
|
|
solenoid.value = False
|
|
|
|
uart_server = UARTServer()
|
|
|
|
while True:
|
|
uart_server.start_advertising() # Advertise when not connected.
|
|
|
|
while not uart_server.connected: # Wait for connection
|
|
pass
|
|
|
|
while uart_server.connected: # Connected
|
|
if uart_server.in_waiting: # Check BLE commands
|
|
packet = Packet.from_stream(uart_server)
|
|
if isinstance(packet, ButtonPacket):
|
|
if packet.button == '1' and packet.pressed:
|
|
solenoid.value = True # Activate solenoid for 1 second
|
|
sleep(1)
|
|
solenoid.value = False
|
|
|
|
led_intensity = led.value # Check blue LED detector intensity
|
|
led_on = led_intensity > 1000
|
|
# Color: red = off, green = on
|
|
color_packet = ColorPacket((255 * int(not led_on), 255 * led_on, 0))
|
|
try:
|
|
uart_server.write(color_packet.to_bytes()) # Transmit state color
|
|
except OSError:
|
|
pass
|
|
|
|
sleep(.2)
|