Adafruit_Learning_System_Gu.../Haunt_Air_Blaster/code.py
2024-10-15 16:16:13 -07:00

70 lines
1.8 KiB
Python

# SPDX-FileCopyrightText: 2024 John Park for Adafruit Industries
#
# SPDX-License-Identifier: MIT
'''
Air Blaster
Feather RP2040 Prop-Maker with Power Relay FeatherWing and VL53L1X distance sensor
'''
import time
import board
import digitalio
import adafruit_vl53l1x
TRIGGER_DISTANCE = 50.0
triggered = False
i2c = board.STEMMA_I2C()
vl53 = adafruit_vl53l1x.VL53L1X(i2c)
vl53.distance_mode = 2
vl53.timing_budget = 100
print("VL53L1X Simple Test.")
print("--------------------")
model_id, module_type, mask_rev = vl53.model_info
print("Model ID: 0x{:0X}".format(model_id))
print("Module Type: 0x{:0X}".format(module_type))
print("Mask Revision: 0x{:0X}".format(mask_rev))
print("Distance Mode: ", end="")
if vl53.distance_mode == 1:
print("SHORT")
elif vl53.distance_mode == 2:
print("LONG")
else:
print("UNKNOWN")
print("Timing Budget: {}".format(vl53.timing_budget))
print("--------------------")
vl53.start_ranging()
relay_pin = digitalio.DigitalInOut(board.D10)
relay_pin.direction = digitalio.Direction.OUTPUT
relay_pin.value = False
def blast(repeat, duration, rate):
for _ in range(repeat):
relay_pin.value = True
print("bang")
time.sleep(duration)
relay_pin.value = False
time.sleep(rate)
distance = None
while True:
if vl53.data_ready:
distance = vl53.distance
print("Distance: {} cm".format(vl53.distance))
vl53.clear_interrupt()
time.sleep(0.1)
if distance:
if distance <= TRIGGER_DISTANCE:
if not triggered :
blast(3, 0.01, 0.1) # adjust repeat, duration, rate here
time.sleep(0.4)
blast(2, 0.01, 0.2) # adjust repeat, duration, rate here
triggered = True
else:
triggered = False