Looking for a better way to do 2 IF statements within a loop.

Hey guys, I am working on this project that uses ultrasonic to measure distance then activate a relay when a certain distance is met and so on. It worked well with one ultrasonic and the relay module. I got confused when I have 2 ultrasonics measuring 2 different things.

The code below works ok but the delay to blink the relay would delay the entire loop. Just curious if there is a more efficient way to do this.

Thanks in advance.


#define ultrasonic1_vcc 13
#define ultrasonic2_vcc 12

#define red_light1 10
#define green_light1 9

#define red_light2 8
#define green_light2 7

#define ultrasonic1_echoPin 5
#define ultrasonic1_trigPin 4
#define ultrasonic2_echoPin 3
#define ultrasonic2_trigPin 2




void setup() {
 Serial.begin (9600);
 
 pinMode(ultrasonic1_vcc, OUTPUT);
 digitalWrite(ultrasonic1_vcc, HIGH);
 pinMode(ultrasonic2_vcc, OUTPUT);
 digitalWrite(ultrasonic2_vcc, HIGH);

 pinMode(ultrasonic1_trigPin, OUTPUT);
 pinMode(ultrasonic1_echoPin, INPUT);
 pinMode(ultrasonic2_trigPin, OUTPUT);
 pinMode(ultrasonic2_echoPin, INPUT);
 
 pinMode(green_light1, OUTPUT);
 pinMode(red_light1, OUTPUT);
 pinMode(green_light2, OUTPUT);
 pinMode(red_light2, OUTPUT);
}

void loop() {
 long ultrasonic1_duration, ultrasonic1_distance;
 digitalWrite(ultrasonic1_trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(ultrasonic1_trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(ultrasonic1_trigPin, LOW);
 ultrasonic1_duration = pulseIn(ultrasonic1_echoPin, HIGH);
 ultrasonic1_distance = (ultrasonic1_duration/2) / 29;
 
 long ultrasonic2_duration, ultrasonic2_distance;
 digitalWrite(ultrasonic2_trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(ultrasonic2_trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(ultrasonic2_trigPin, LOW);
 ultrasonic2_duration = pulseIn(ultrasonic2_echoPin, HIGH);
 ultrasonic2_distance = (ultrasonic2_duration/2) / 29;
 
 
 if (ultrasonic1_distance <= 15){
    Serial.print(ultrasonic1_distance);
    Serial.println(" cm roll 1 still full Green Light On");
    digitalWrite(green_light1, LOW);
    digitalWrite(red_light1, HIGH);
 }
 
 else {
   if (ultrasonic1_distance > 15 && ultrasonic1_distance <= 18){
      Serial.print(ultrasonic1_distance);
      Serial.println(" cm roll 1 is running low Red Light On");
      digitalWrite(green_light1, HIGH);
      digitalWrite(red_light1, LOW);
   }
   
   else {
      Serial.print(ultrasonic1_distance);
      Serial.println(" cm roll 1 critically low Red Light Blinking");
      digitalWrite(green_light1, HIGH);
      digitalWrite(red_light1, HIGH);
      delay(400);
      digitalWrite(red_light1, LOW);
      delay(400);
   }
 }
 
 
 if (ultrasonic2_distance <= 15){
    Serial.print(ultrasonic2_distance);
    Serial.println(" cm roll 2 still full Green Light On");
    digitalWrite(green_light2, LOW);
    digitalWrite(red_light2, HIGH);
 }
 
 else {
   if (ultrasonic2_distance > 15 && ultrasonic2_distance <= 18){
      Serial.print(ultrasonic2_distance);
      Serial.println(" cm roll 2 is running low Red Light On");
      digitalWrite(green_light2, HIGH);
      digitalWrite(red_light2, LOW);
   }
   
   else {
      Serial.print(ultrasonic2_distance);
      Serial.println(" cm roll 2 critically low Red Light Blinking");
      digitalWrite(green_light2, HIGH);
      digitalWrite(red_light2, HIGH);
      delay(400);
      digitalWrite(red_light2, LOW);
      delay(400);
   }
 } 
 
 delay(100);
}

Demonstration code for several things at the same time

Also:

Please read these two posts:

How to use this forum - please read.
and
Read this before posting a programming question ...
You have posted code without using code tags. The code tags make the code look

like this

when posting source code files. It makes it easier to read, and can be copied with a single mouse click. Also, if you don't do it, some of the character sequences in the code can be misinterpred by the forum code as italics or funny emoticons.
If you have already posted without using code tags, open your message and select "modify" from the pull down menu labelled, "More", at the lower left corner of the message. Highlight your code by selecting it (it turns blue), and then click on the "</>" icon at the upper left hand corner. Click on the "Save" button. Code tags can also be inserted manually in the forum text using the [code] and [/code] metatags.

Thanks ... and sorry for missing that

 tag