From 8d4a392e90a2821d0f64598776a78c8062f36b09 Mon Sep 17 00:00:00 2001 From: John Park Date: Tue, 15 Oct 2024 16:16:13 -0700 Subject: [PATCH] first commit air blaster code --- Haunt_Air_Blaster/code.py | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Haunt_Air_Blaster/code.py diff --git a/Haunt_Air_Blaster/code.py b/Haunt_Air_Blaster/code.py new file mode 100644 index 000000000..18ffe593c --- /dev/null +++ b/Haunt_Air_Blaster/code.py @@ -0,0 +1,70 @@ +# 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