4 Channel relay on and of over serial

hello im trying to learn how to make a sketch with the following

4 channel relay on and off switched on at default all over serial found some sketches but just triggers on then delay off this is what i have for 1 relay on and off over serial

char serialin;

#define relay 8
void setup() {
//Begin Serial Comunication(configured for 9600baud)
Serial.begin(9600);
//pin relay as OUTPUT
pinMode(relay, OUTPUT);
//Relay
digitalWrite(relay,LOW);
}

void loop() {
//Verify connection by serial
while (Serial.available() > 0) {
//Read Serial data and alocate on serialin
serialin = Serial.read();
//If serialin is equal as 'o' or 'O' LAMP OFF
if (serialin == 'o' || serialin =='O'){ // Two Pipeines(||) to make a boolean OR Comparission
digitalWrite(relay,LOW);
}
/*serialin is equal as 'c' or C */
else if (serialin == 'c' || serialin =='C'){ // Two Pipeines(||) to make a boolean OR Comparission
digitalWrite(relay,HIGH);
}
Serial.println(serialin);
}
}

That looks nice and probably works. Now what?

When you post:

  1. Use CTRL-T in the Arduino IDE to autoformat your code.
  2. Paste the autoformatted code between code tags (the </> button) so that we can easily see your code.

You are going to be tempted to have relay1, relay2, relay3, relay4. DON'T!

Learn to use arrays. Learn to use loops.

char serialin;

#define relay 8
void setup() {
  //Begin Serial Comunication(configured for 9600baud)
  Serial.begin(9600);
  //pin relay as OUTPUT
  pinMode(relay, OUTPUT); 
  //Relay 
  digitalWrite(relay,LOW);
  }

void loop() {
  //Verify connection by serial
  while (Serial.available() > 0) {
    //Read Serial data and alocate on serialin
    serialin = Serial.read();
    //If serialin is equal as 'o' or 'O' LAMP OFF
    if (serialin == 'o' || serialin =='O'){ // Two Pipeines(||) to make a boolean OR Comparission
      digitalWrite(relay,LOW); 
      }
    /*serialin is equal as 'c' or C */
    else if (serialin == 'c' || serialin =='C'){ // Two Pipeines(||) to make a boolean OR Comparission
      digitalWrite(relay,HIGH);
      }
      Serial.println(serialin);
  }
}

Thanks!

Now try to do the same for two relays, after learning about arrays and loops. The switch/case statement may come in handy as well.

What characters do you want to use for controlling your other relays?

Simple serial control code example.

// zoomkat 8-6-10 serial I/O string test
// type a string in serial monitor. then send or enter
// for IDE 0019 and later

//A very simple example of sending a string of characters 
//from the serial monitor, capturing the individual 
//characters into a String, then evaluating the contents 
//of the String to possibly perform an action (on/off board LED).

int ledPin = 13;
String readString;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); 
  Serial.println("serial on/off test 0021"); // so I can keep track
}

void loop() {

  while (Serial.available()) {
    delay(3);  
    char c = Serial.read();
    readString += c; 
  }

  if (readString.length() >0) {
    Serial.println(readString);

    if(readString.indexOf("on") >=0)
    {
      digitalWrite(ledPin, HIGH);
      Serial.println("LED ON");
    }

    if(readString.indexOf("off") >=0)
    {
      digitalWrite(ledPin, LOW);
      Serial.println("LED OFF");
    }

    readString="";
  } 
}

Just numbers once code done I will then make a android app I'm a total newb to programming any numbers like relay 1 1 on 2 off...... relay 2 3 on 4 off etc

zoomkat:
Simple serial control code example.

// zoomkat 8-6-10 serial I/O string test

// type a string in serial monitor. then send or enter
// for IDE 0019 and later

//A very simple example of sending a string of characters
//from the serial monitor, capturing the individual
//characters into a String, then evaluating the contents
//of the String to possibly perform an action (on/off board LED).

int ledPin = 13;
String readString;

void setup() {
 Serial.begin(9600);
 pinMode(ledPin, OUTPUT);
 Serial.println("serial on/off test 0021"); // so I can keep track
}

void loop() {

while (Serial.available()) {
   delay(3);  
   char c = Serial.read();
   readString += c;
 }

if (readString.length() >0) {
   Serial.println(readString);

if(readString.indexOf("on") >=0)
   {
     digitalWrite(ledPin, HIGH);
     Serial.println("LED ON");
   }

if(readString.indexOf("off") >=0)
   {
     digitalWrite(ledPin, LOW);
     Serial.println("LED OFF");
   }

readString="";
 }
}

That would just control 1 how to add 3 more

That would just control 1 how to add 3 more

Maybe some copy/paste like below.

// zoomkat 8-6-10 serial I/O string test
// type a string in serial monitor. then send or enter
// for IDE 0019 and later

//A very simple example of sending a string of characters
//from the serial monitor, capturing the individual
//characters into a String, then evaluating the contents
//of the String to possibly perform an action (on/off board LED).

int ledPin13 = 13;
int ledPin2 = 2;
int ledPin3 = 3;
int ledPin4 = 4;

String readString;

void setup() {
  Serial.begin(9600);
  
  pinMode(ledPin13, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  
  Serial.println("serial on/off test 0021"); // so I can keep track
}

void loop() {

  while (Serial.available()) {
    delay(3); 
    char c = Serial.read();
    readString += c;
  }

  if (readString.length() >0) {
    Serial.println(readString);

//////////////////

    if(readString.indexOf("on13") >=0)
    {
      digitalWrite(ledPin13, HIGH);
      Serial.println("LED13 ON");
    }

    if(readString.indexOf("off13") >=0)
    {
      digitalWrite(ledPin13, LOW);
      Serial.println("LED13 OFF");
    }
//////////////////////
    if(readString.indexOf("on2") >=0)
    {
      digitalWrite(ledPin2, HIGH);
      Serial.println("LED2 ON");
    }

    if(readString.indexOf("off2") >=0)
    {
      digitalWrite(ledPin2, LOW);
      Serial.println("LED2 OFF");
    }
////////////////////////
    if(readString.indexOf("on3") >=0)
    {
      digitalWrite(ledPin3, HIGH);
      Serial.println("LED3 ON");
    }

    if(readString.indexOf("off3") >=0)
    {
      digitalWrite(ledPin3, LOW);
      Serial.println("LED3 OFF");
    }
////////////////////////
    if(readString.indexOf("on4") >=0)
    {
      digitalWrite(ledPin4, HIGH);
      Serial.println("LED4 ON");
    }

    if(readString.indexOf("off4") >=0)
    {
      digitalWrite(ledPin4, LOW);
      Serial.println("LED4 OFF");
    }
///////////////
    readString="";
  }
}

Ok ty I test it out see if it works

// zoomkat 8-6-10 serial I/O string test
// type a string in serial monitor. then send or enter
// for IDE 0019 and later

//A very simple example of sending a string of characters
//from the serial monitor, capturing the individual
//characters into a String, then evaluating the contents
//of the String to possibly perform an action (on/off board LED).

int Relay1 = 8;
int Relay2 = 9;
int Relay3 = 10;
int Relay4 = 11;

String readString;

void setup() {
  Serial.begin(9600);
  
  pinMode(Relay1, OUTPUT);
  pinMode(Relay2, OUTPUT);
  pinMode(Relay3, OUTPUT);
  pinMode(Relay4, OUTPUT);
  
  Serial.println("serial on/off test 0021"); // so I can keep track
}

void loop() {

  while (Serial.available()) {
    delay(3); 
    char c = Serial.read();
    readString += c;
  }

  if (readString.length() >0) {
    Serial.println(readString);

//////////////////

    if(readString.indexOf("on1") >=0)
    {
      digitalWrite(Relay1, HIGH);
      Serial.println("Relay1 ON");
    }

    if(readString.indexOf("off1") >=0)
    {
      digitalWrite(Relay1, LOW);
      Serial.println("Relay1 OFF");
    }
//////////////////////
    if(readString.indexOf("on2") >=0)
    {
      digitalWrite(Relay2, HIGH);
      Serial.println("Relay2 ON");
    }

    if(readString.indexOf("off2") >=0)
    {
      digitalWrite(Relay2, LOW);
      Serial.println("Relay2 OFF");
    }
////////////////////////
    if(readString.indexOf("on3") >=0)
    {
      digitalWrite(Relay3, HIGH);
      Serial.println("Relay3 ON");
    }

    if(readString.indexOf("off3") >=0)
    {
      digitalWrite(Relay3, LOW);
      Serial.println("Relay3 OFF");
    }
////////////////////////
    if(readString.indexOf("on4") >=0)
    {
      digitalWrite(Relay4, HIGH);
      Serial.println("Relay4 ON");
    }

    if(readString.indexOf("off4") >=0)
    {
      digitalWrite(Relay4, LOW);
      Serial.println("Relay4 OFF");
    }
///////////////
    readString="";
  }
}

its working perfect ty i gave you some karma