Arduino UNO Relay HIGH //Blink Without Delay

Hi Iam new in the Arduino World and trying to make a simple Watering system.
I have i working code and want to make i more "Fancy" and Shorter :slight_smile:

to skip all delay between LEDY,LEDG and LEDY i want to use "Blink Without Delay"

Like this if is possible?
"digitalWrite(RELAY,LOW);digitalWrite(BlinkWD);delay(5000);

Part of the code under.

       if(value <=20) // less 20
       {
                  Serial.println("Watering");Serial.println(value);
                  digitalWrite(RELAY,LOW);
                  digitalWrite(LEDY, LOW);digitalWrite(LEDR, LOW);digitalWrite(LEDG, LOW);
                  delay(600);digitalWrite(LEDY, HIGH);digitalWrite(LEDR, HIGH);digitalWrite(LEDG, HIGH); 
                  delay(600);digitalWrite(LEDY, LOW);digitalWrite(LEDR, LOW);digitalWrite(LEDG, LOW);
                  delay(600);digitalWrite(LEDY, HIGH);digitalWrite(LEDR, HIGH);digitalWrite(LEDG, HIGH);
                  delay(600);digitalWrite(LEDY, LOW);digitalWrite(LEDR, LOW);digitalWrite(LEDG, LOW);
                  delay(600);digitalWrite(LEDY, HIGH);digitalWrite(LEDR, HIGH);digitalWrite(LEDG, HIGH);
                  delay(600);digitalWrite(LEDY, LOW);digitalWrite(LEDR, LOW);digitalWrite(LEDG, LOW);
                  delay(600);digitalWrite(LEDY, HIGH);digitalWrite(LEDR, HIGH);digitalWrite(LEDG, HIGH);
                  delay(600);digitalWrite(LEDY, LOW);digitalWrite(LEDR, LOW);digitalWrite(LEDG, LOW);
                  delay(600);digitalWrite(LEDY, HIGH);digitalWrite(LEDR, HIGH);digitalWrite(LEDG, HIGH);
                  delay(600);digitalWrite(LEDY, LOW);digitalWrite(LEDR, LOW);digitalWrite(LEDG, LOW);
                  delay(600);digitalWrite(LEDY, HIGH);digitalWrite(LEDR, HIGH);digitalWrite(LEDG, HIGH);
                  digitalWrite(RELAY,HIGH);
                  delay(5000);
               
       }

Thanks for helping me out
//Dan

Rule 1, a line ENDS after a ; No more code afterwards!

But where are you stuck? Just posting a bunch of code doesn't help...

Try to understand WHY Blink without delay works. If you do, it's not hard to extend. But as long as you don't it's hard to just try and copy past it like a mad code monkey and get it to work :wink:

thy :slight_smile: for replay
and i changed my code.

so here is my hole code with some explains.

const int LEDG = 12; // Green Led
const int LEDY = 11; // Yellow Led
const int LEDR = 10; // Red Led
const int RELAY = 2; // RELAY PIN D2
const int SENSE = 0; // Soil Sensor
int value = value / 10; //Soil valu Divide by 10



void setup() {
  Serial.begin(9600);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDY, OUTPUT);
  pinMode(LEDR, OUTPUT);
  pinMode(RELAY, OUTPUT);
  pinMode (SENSE, INPUT);
  digitalWrite(RELAY, HIGH);
  delay(5000);
  Serial.println("Watering System");
  Serial.println("-----------------------------");

}
void loop() {

  delay(1000);
  value = analogRead(SENSE);
  value = value / 10; //Devide by 10
  Serial.println(value);

  if (value <= 20) // IS soil Value is less then 20 ore = Turn on water for 5 Sec and Flash All Leds
  {
    Serial.println("Water On!"); Serial.println(value);
    digitalWrite(RELAY, LOW);
    digitalWrite(LEDY, LOW);
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, LOW);
    delay(600);
    digitalWrite(LEDY, HIGH);
    digitalWrite(LEDR, HIGH);
    digitalWrite(LEDG, HIGH);
    delay(600);
    digitalWrite(LEDY, LOW);
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, LOW);
    delay(600);
    digitalWrite(LEDY, HIGH);
    digitalWrite(LEDR, HIGH);
    digitalWrite(LEDG, HIGH);
    delay(600);
    digitalWrite(LEDY, LOW);
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, LOW);
    delay(600);
    digitalWrite(LEDY, HIGH);
    digitalWrite(LEDR, HIGH);
    digitalWrite(LEDG, HIGH);
    delay(600);
    digitalWrite(LEDY, LOW);
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, LOW);
    delay(600);
    digitalWrite(LEDY, HIGH);
    digitalWrite(LEDR, HIGH);
    digitalWrite(LEDG, HIGH);
    delay(600);
    digitalWrite(LEDY, LOW);
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, LOW);
    delay(600);
    digitalWrite(LEDY, HIGH);
    digitalWrite(LEDR, HIGH);
    digitalWrite(LEDG, HIGH);
    delay(600);
    digitalWrite(LEDY, LOW);
    digitalWrite(LEDR, LOW);
    digitalWrite(LEDG, LOW);
    delay(600);
    digitalWrite(LEDY, HIGH);
    digitalWrite(LEDR, HIGH);
    digitalWrite(LEDG, HIGH);
    digitalWrite(RELAY, HIGH);
    delay(5000);

  }
  else
  {
    if (value >= 25) //More then 25
      Serial.println("No need for Water!"); Serial.print(value);
    digitalWrite(RELAY, HIGH);
    digitalWrite(LEDG, LOW);
    digitalWrite(LEDY, LOW);
    digitalWrite(LEDR, HIGH);
  }
  delay(5000);

}

So the sensor Measure the soil value in the plant, and if its below 20 the relay Turns on and start all Led`s Flashing for the hole watering progress.

the problem is i don`t want all the "delay" when i know i don't need it.
so point me in the right direction so i can learn the right way..

Now i reading about ,
Time-Sensitive While Loops
Blink Without Delay
Am i on the right track? :stuck_out_tongue:

Why
is
all
you
code
like
this?

Press Ctrl+T, looks better, doesn't it?

And with Blink without delay you're on the right track. Try to understand it :slight_smile: It's one of the most important basics for programming / timing something. See millis() as a clock, only one that starts running from zero when you start the Arduino. But it does not matter what "time" is on a clock if you just want to time 5 minutes. Even when your clock isn't showing the correct time, you can still time 5 minutes with it as long as it doesn't run to slow or fast :slight_smile:

Yes :slight_smile: Ctrl+T :wink: feeling like i kid again :stuck_out_tongue:
gona try for some hours/1-2 days until i post again :slight_smile:

thank you for all help so far :slight_smile: