So something like:
#define ECHO_PIN 8
#define TRIG_PIN 7
int RED_LED_PIN = 5;
int GREEN_LED_PIN = 6;
float readDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void setup() {
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
static unsigned long timeCapture;
if (!timeCapture && readDistance() <= 31) {
timeCapture = millis();
}
if (readDistance() >= 30) {
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, LOW);
timeCapture = 0;
}
if(timeCapture && (millis() - timeCapture) >= 4000) {
digitalWrite(GREEN_LED_PIN, HIGH);
digitalWrite(RED_LED_PIN, LOW);
timeCapture = 1;
}
}
?