#include #include #include LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified module #define READY_BUTTON 12 #define READY_LED 7 //GREEN #define FLASH_TRIGGER_PIN 2 #define SENSOR_PIN 11 #define FIRE_LED 4 //BLUE #define POT_PIN A2 #define STANDBY 0 #define ACTIVE 1 int mode = STANDBY; int flashDelayMS = 0; int NOISE; void setup() { lcd.setBacklightPin(3,POSITIVE); lcd.setBacklight(HIGH); lcd.begin(16, 2); lcd.clear(); pinMode(SENSOR_PIN, INPUT); digitalWrite(SENSOR_PIN, LOW); pinMode(READY_BUTTON, INPUT_PULLUP); pinMode(READY_LED, OUTPUT); digitalWrite(READY_LED, LOW); pinMode(FLASH_TRIGGER_PIN, OUTPUT); pinMode(FIRE_LED, OUTPUT); digitalWrite(FIRE_LED, LOW); Serial.begin(9600); delay(250); } void loop() { lcd.setCursor(0,0); lcd.print("Delay"); flashDelayMS = analogRead(POT_PIN)/4.092; // 0-250 ms lcd.setCursor(7,0); lcd.print(" "); lcd.setCursor(7,0); lcd.print(flashDelayMS); if(digitalRead(READY_BUTTON)==LOW) { mode = ACTIVE; } if(mode == ACTIVE){ digitalWrite(READY_LED, HIGH); lcd.setCursor(4,1); lcd.print(" "); lcd.setCursor(4,1); lcd.print("READY"); } NOISE = digitalRead(SENSOR_PIN); if((mode == ACTIVE)&&(NOISE == 1)) { delay(flashDelayMS); //Serial.println(flashDelayMS); digitalWrite(FLASH_TRIGGER_PIN, HIGH); // fire flash delay(50); digitalWrite(FLASH_TRIGGER_PIN, LOW); digitalWrite(FIRE_LED, HIGH); delay(2000); digitalWrite(FIRE_LED, LOW); digitalWrite(READY_LED, LOW); lcd.clear(); mode = STANDBY; }}