How to combine three blocks codes to work in one arduino by sending massages

//  CODE FOR PIR SENSOR 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);

// TX3 RD 2
int pirsensor = 10;
int buzzer = 12;
int redled = 13;

void setup() {
  randomSeed(analogRead(0));
  Serial.begin(9600);
 mySerial.begin(9600); // original 19200. while enter 9600 for sim900A
  Serial.println(" logging time completed!");
  pinMode(pirsensor, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(redled, OUTPUT);
digitalWrite(buzzer, LOW);
digitalWrite(redled, LOW);
  

  delay(100);

}

void loop() {


  if ( digitalRead(pirsensor) == HIGH) 
  { digitalWrite(buzzer, HIGH);
    digitalWrite(redled, HIGH);
   Serial.println("making call");
   
    mySerial.println("AT"); //Once the handshake test is successful, i t will back to OK
  updateSerial();
  
  mySerial.println("ATD+ +233240200044;"); //  change ZZ with country code and xxxxxxxxxxx with phone number to dial
  updateSerial();
  delay(20000); // wait for 20 seconds...
  mySerial.println("ATH"); //hang up
  updateSerial();

   delay(2000);
  }
  if ( digitalRead(pirsensor) == LOW) 
  {
    digitalWrite(buzzer, LOW);
    digitalWrite(redled, LOW);
   ;
    delay(1000);
  }

}




void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}









// CODE FOR CONTROLLING RELAY USING GSM

#include <EEPROM.h>
#include <SoftwareSerial.h> //Create software serial object to communicate with SIM800L
SoftwareSerial GSM(8, 9);   //SIM800L Tx & Rx is connected to Arduino #8 & #9

String phone_no1 = "+233240200044"; // phone number to sms
String phone_no2 = "Enter Number2"; 

String        RxString  = ""; // Will hold the incoming String  from the GSM shield
char          RxChar    = ' ';
int           Counter   = 0;
String        GSM_Nr    = "";
String        GSM_Msg   = "";

#define Relay1 2 // Load1 Pin Out
#define Relay2 3 // Load2 Pin Out
#define Relay3 4 // Load3 Pin Out
#define Relay4 5 // Load4 Pin Out

int load1, load2, load3, load4;

void setup(){ // put your setup code here, to run once

pinMode(Relay1, OUTPUT); digitalWrite(Relay1, 1); 
pinMode(Relay2, OUTPUT); digitalWrite(Relay2, 1); 
pinMode(Relay3, OUTPUT); digitalWrite(Relay3, 1); 
pinMode(Relay4, OUTPUT); digitalWrite(Relay4, 1); 

Serial.begin(9600);//Begin serial communication with Arduino and Arduino IDE (Serial Monitor)  
GSM.begin(9600);   //Begin serial communication with Arduino and SIM800L

Serial.println("Initializing....");
initModule("AT","OK",1000);                //Scan for GSM Module
initModule("AT+CPIN?","READY",1000);       //this command is used to check whether SIM card is inserted in GSM Module or not
initModule("AT+CMGF=1","OK",1000);         //Set SMS mode to ASCII
initModule("AT+CNMI=2,2,0,0,0","OK",1000); //Set device to read SMS if available and print to serial
Serial.println("Initialized Successfully"); 
  
load1 = EEPROM.read(1);
load2 = EEPROM.read(2);
load3 = EEPROM.read(3);
load4 = EEPROM.read(4);

relays();

delay(100);
}

void loop(){
  
  // scan for data from software serial port
  //-----------------------------------------------
  RxString = "";
  Counter = 0;
  while(GSM.available()){
    delay(1);  // short delay to give time for new data to be placed in buffer
    // get new character
    RxChar = char(GSM.read());
    //add first 200 character to string
    if (Counter < 200) {
      RxString.concat(RxChar);
      Counter = Counter + 1;
    }
  }
 
  // Is there a new SMS?
  //-----------------------------------------------
  if (Received(F("CMT:")) ) GetSMS();

if(GSM_Nr==phone_no1 || GSM_Nr==phone_no2){
  
if(GSM_Msg=="load1on") {load1=0; sendSMS(GSM_Nr,"Load 1 is On");}
if(GSM_Msg=="load1off"){load1=1; sendSMS(GSM_Nr,"Load 1 is Off");}

if(GSM_Msg=="load2on") {load2=0; sendSMS(GSM_Nr," Load 2 is On");}
if(GSM_Msg=="load2off"){load2=1; sendSMS(GSM_Nr," Load 2 is Off");}

if(GSM_Msg=="load3on") {load3=0; sendSMS(GSM_Nr," Load 3 is On");}
if(GSM_Msg=="load3off"){load3=1; sendSMS(GSM_Nr," Load 3 is Off");}

if(GSM_Msg=="load4on") {load4=0; sendSMS(GSM_Nr," Load 4 is On");}
if(GSM_Msg=="load4off"){load4=1; sendSMS(GSM_Nr," Load 4 is Off");}

if(GSM_Msg=="allon") {load1=0, load2=0, load3=0, load4=0; sendSMS(GSM_Nr," All Load is On");}
if(GSM_Msg=="alloff"){load1=1, load2=1, load3=1, load4=1; sendSMS(GSM_Nr," All Load is Off");}

if(GSM_Msg=="loadstatus"){
String loadst = "";

if(load1==0){loadst="Load1 On\r\n";}
        else{loadst="Load1 Off\r\n";}
        
if(load2==0){loadst=loadst + "Load2 On\r\n";}
        else{loadst=loadst + "Load2 Off\r\n";}
        
if(load3==0){loadst=loadst + "Load3 On\r\n";}
        else{loadst=loadst + "Load3 Off\r\n";}
        
if(load4==0){loadst=loadst + "Load4 On";}
        else{loadst=loadst + "Load4 Off";}
        
sendSMS(GSM_Nr,loadst);
}

eeprom_write();
relays();
}


GSM_Nr="";
GSM_Msg="";
}

void eeprom_write(){
EEPROM.write(1,load1);
EEPROM.write(2,load2);
EEPROM.write(3,load3);
EEPROM.write(4,load4);  
}

void relays(){  
digitalWrite(Relay1, load1); 
digitalWrite(Relay2, load2); 
digitalWrite(Relay3, load3); 
digitalWrite(Relay4, load4); 
}

// Send SMS 
void sendSMS(String number, String msg){
GSM.print("AT+CMGS=\"");GSM.print(number);GSM.println("\"\r\n"); //AT+CMGS=”Mobile Number” <ENTER> - Assigning recipient’s mobile number
delay(500);
GSM.println(msg); // Message contents
delay(500);
GSM.write(byte(26)); //Ctrl+Z  send message command (26 in decimal).
delay(5000);  
}

// Get SMS Content
void GetSMS() {
  //Get SMS number
  //================================================
  GSM_Nr  = RxString;
  //get number
  int t1 = GSM_Nr.indexOf('"');
  GSM_Nr.remove(0,t1 + 1);
  t1 = GSM_Nr.indexOf('"');
  GSM_Nr.remove(t1);
   
  // Get SMS message
  //================================================
  GSM_Msg = RxString;
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0,t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0,t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0,t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0,t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0,t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0,t1 + 1);
  GSM_Msg.remove(0,1);
  GSM_Msg.trim();

Serial.print("Number:"); Serial.println(GSM_Nr);
Serial.print("SMS:"); Serial.println(GSM_Msg);
}

// Search for specific characters inside RxString 
boolean Received(String S) {
  if (RxString.indexOf(S) >= 0) return true; else return false;
}


// Init GSM Module 
void initModule(String cmd, char *res, int t){
while(1){
    Serial.println(cmd);
    GSM.println(cmd);
    delay(100);
    while(GSM.available()>0){
       if(GSM.find(res)){
        Serial.println(res);
        delay(t);
        return;
       }else{Serial.println("Error");}}
    delay(t);
  }
}




//Fire Alarm System And Gas detection using GSM CALL OR SMS
/*
Fire Alarm System And Gas detection using GSM CALL OR SMS
*/

int redLed1 = 3;
int redLed2 = 4;
int greenLed = 8;
int buzzer1 = 5; //PWM (~) pin
int buzzer2 = 6; //PWM (~) pin
int gasPin = A0;
int flamePin = 2;
// Your threshold value
int gasSensorThres = 400;

void setup() {
  pinMode(redLed1, OUTPUT);  
  pinMode(redLed2, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(buzzer1, OUTPUT);
  pinMode(buzzer2, OUTPUT);
  pinMode(gasPin, INPUT);
  pinMode(flamePin, INPUT);
  Serial.begin(9600);
}

void loop() {
  int gasSensor = analogRead(gasPin);
  int flameSensor = digitalRead(flamePin);
  
  Serial.print("gasPin Value: ");
  Serial.println(gasSensor);
  Serial.print("flamePin Value: ");
  Serial.println(flameSensor);
  delay(1000);
  
  if (gasSensor > gasSensorThres  && flameSensor==LOW){
   digitalWrite(redLed1, HIGH);
    tone(buzzer1, 5000); //the buzzer sound frequency at 5000 Hz
    digitalWrite(redLed2, HIGH);
    tone(buzzer2, 5000); //the buzzer sound frequency at 5000 Hz
    digitalWrite(greenLed, LOW);
  }
   else if (gasSensor > gasSensorThres)
  {
    digitalWrite(redLed1, HIGH);
    tone(buzzer1, 5000); //the buzzer sound frequency at 5000 Hz
    digitalWrite(redLed2, LOW);
    noTone(buzzer2);
    digitalWrite(greenLed, LOW);
  }
  else if (flameSensor==LOW){ // HIGH MEANS NO FLAME
    digitalWrite(redLed1, LOW);
    noTone(buzzer1);
    digitalWrite(redLed2, HIGH);
    tone(buzzer2, 5000); //the buzzer sound frequency at 5000 Hz
    digitalWrite(greenLed, LOW);
    }
  
  else
  {
    digitalWrite(redLed1, LOW);
    digitalWrite(redLed2, LOW);
    noTone(buzzer1);
    noTone(buzzer2);
    digitalWrite(greenLed, HIGH);    
  }
}

Do you have a question?
Code tags?

I think they're asking how they would allow two different blocks of code to work on one Arduino, but messed up with the code blocks here:

It seems that didn't format the "```"s correctly

Edit: Bit weird that they didn't provide further explanation outside of a pretty long title though

You have pin conflicts on 2, 3, and 8. You are going to have to move some around.

WARNING: It looks like two of those sketches use SoftwareSerial. The SoftwareSerial can only be listening to one port at a time. You should probably move to an Arduino MEGA and use hardware serial ports in place of the SoftwareSerial.

void setup()
{
  setup1();
  setup2();
  setup3();
}

void loop()
{
  loop1();
  loop2();
  loop3();
}


// CODE FOR PIR SENSOR
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);

// TX3 RD 2
int pirsensor = 10;
int buzzer = 12;
int redled = 13;

void setup1()
{
  randomSeed(analogRead(0));
  Serial.begin(9600);
  mySerial.begin(9600); // original 19200. while enter 9600 for sim900A
  Serial.println(" logging time completed!");
  pinMode(pirsensor, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(redled, OUTPUT);
  digitalWrite(buzzer, LOW);
  digitalWrite(redled, LOW);

  delay(100);

}

void loop1()
{

  if ( digitalRead(pirsensor) == HIGH)
  {
    digitalWrite(buzzer, HIGH);
    digitalWrite(redled, HIGH);
    Serial.println("making call");

    mySerial.println("AT"); //Once the handshake test is successful, i t will back to OK
    updateSerial();

    mySerial.println("ATD+ +233240200044;"); // change ZZ with country code and xxxxxxxxxxx with phone number to dial
    updateSerial();
    delay(20000); // wait for 20 seconds...
    mySerial.println("ATH"); //hang up
    updateSerial();

    delay(2000);
  }
  if ( digitalRead(pirsensor) == LOW)
  {
    digitalWrite(buzzer, LOW);
    digitalWrite(redled, LOW);
    ;
    delay(1000);
  }

}

void updateSerial()
{
  delay(500);
  while (Serial.available())
  {
    mySerial.write(Serial.read());//Forward what Serial received to Software Serial Port
  }
  while (mySerial.available())
  {
    Serial.write(mySerial.read());//Forward what Software Serial received to Serial Port
  }
}

// CODE FOR CONTROLLING RELAY USING GSM

#include <EEPROM.h>
#include <SoftwareSerial.h> //Create software serial object to communicate with SIM800L
SoftwareSerial GSM(8, 9); //SIM800L Tx & Rx is connected to Arduino #8 & #9

String phone_no1 = "+233240200044"; // phone number to sms
String phone_no2 = "Enter Number2";

String RxString = ""; // Will hold the incoming String from the GSM shield
char RxChar = ' ';
int Counter = 0;
String GSM_Nr = "";
String GSM_Msg = "";

#define Relay1 2 // Load1 Pin Out
#define Relay2 3 // Load2 Pin Out
#define Relay3 4 // Load3 Pin Out
#define Relay4 5 // Load4 Pin Out

int load1, load2, load3, load4;

void setup2()  // put your setup code here, to run once
{
  pinMode(Relay1, OUTPUT); digitalWrite(Relay1, 1);
  pinMode(Relay2, OUTPUT); digitalWrite(Relay2, 1);
  pinMode(Relay3, OUTPUT); digitalWrite(Relay3, 1);
  pinMode(Relay4, OUTPUT); digitalWrite(Relay4, 1);

  Serial.begin(9600);//Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  GSM.begin(9600); //Begin serial communication with Arduino and SIM800L

  Serial.println("Initializing....");
  initModule("AT", "OK", 1000); //Scan for GSM Module
  initModule("AT+CPIN?", "READY", 1000); //this command is used to check whether SIM card is inserted in GSM Module or not
  initModule("AT+CMGF=1", "OK", 1000); //Set SMS mode to ASCII
  initModule("AT+CNMI=2,2,0,0,0", "OK", 1000); //Set device to read SMS if available and print to serial
  Serial.println("Initialized Successfully");

  load1 = EEPROM.read(1);
  load2 = EEPROM.read(2);
  load3 = EEPROM.read(3);
  load4 = EEPROM.read(4);

  relays();

  delay(100);
}

void loop2()
{

  // scan for data from software serial port
  //-----------------------------------------------
  RxString = "";
  Counter = 0;
  while (GSM.available())
  {
    delay(1); // short delay to give time for new data to be placed in buffer
    // get new character
    RxChar = char(GSM.read());
    //add first 200 character to string
    if (Counter < 200)
    {
      RxString.concat(RxChar);
      Counter = Counter + 1;
    }
  }

  // Is there a new SMS?
  //-----------------------------------------------
  if (Received(F("CMT:")) ) GetSMS();

  if (GSM_Nr == phone_no1 || GSM_Nr == phone_no2)
  {

    if (GSM_Msg == "load1on")
    {
      load1 = 0;
      sendSMS(GSM_Nr, "Load 1 is On");
    }
    if (GSM_Msg == "load1off")
    {
      load1 = 1;
      sendSMS(GSM_Nr, "Load 1 is Off");
    }

    if (GSM_Msg == "load2on")
    {
      load2 = 0;
      sendSMS(GSM_Nr, " Load 2 is On");
    }
    if (GSM_Msg == "load2off")
    {
      load2 = 1;
      sendSMS(GSM_Nr, " Load 2 is Off");
    }

    if (GSM_Msg == "load3on")
    {
      load3 = 0;
      sendSMS(GSM_Nr, " Load 3 is On");
    }
    if (GSM_Msg == "load3off")
    {
      load3 = 1;
      sendSMS(GSM_Nr, " Load 3 is Off");
    }

    if (GSM_Msg == "load4on")
    {
      load4 = 0;
      sendSMS(GSM_Nr, " Load 4 is On");
    }
    if (GSM_Msg == "load4off")
    {
      load4 = 1;
      sendSMS(GSM_Nr, " Load 4 is Off");
    }

    if (GSM_Msg == "allon")
    {
      load1 = 0, load2 = 0, load3 = 0, load4 = 0;
      sendSMS(GSM_Nr, " All Load is On");
    }
    if (GSM_Msg == "alloff")
    {
      load1 = 1, load2 = 1, load3 = 1, load4 = 1;
      sendSMS(GSM_Nr, " All Load is Off");
    }

    if (GSM_Msg == "loadstatus")
    {
      String loadst = "";

      if (load1 == 0)
      {
        loadst = "Load1 On\r\n";
      }
      else
      {
        loadst = "Load1 Off\r\n";
      }

      if (load2 == 0)
      {
        loadst = loadst + "Load2 On\r\n";
      }
      else
      {
        loadst = loadst + "Load2 Off\r\n";
      }

      if (load3 == 0)
      {
        loadst = loadst + "Load3 On\r\n";
      }
      else
      {
        loadst = loadst + "Load3 Off\r\n";
      }

      if (load4 == 0)
      {
        loadst = loadst + "Load4 On";
      }
      else
      {
        loadst = loadst + "Load4 Off";
      }

      sendSMS(GSM_Nr, loadst);
    }

    eeprom_write();
    relays();
  }

  GSM_Nr = "";
  GSM_Msg = "";
}

void eeprom_write()
{
  EEPROM.write(1, load1);
  EEPROM.write(2, load2);
  EEPROM.write(3, load3);
  EEPROM.write(4, load4);
}

void relays()
{
  digitalWrite(Relay1, load1);
  digitalWrite(Relay2, load2);
  digitalWrite(Relay3, load3);
  digitalWrite(Relay4, load4);
}

// Send SMS
void sendSMS(String number, String msg)
{
  GSM.print("AT+CMGS="");GSM.print(number);GSM.println(""\r\n"); //AT+CMGS=”Mobile Number” - Assigning recipient’s mobile number
  delay(500);
  GSM.println(msg); // Message contents
  delay(500);
  GSM.write(byte(26)); //Ctrl+Z send message command (26 in decimal).
  delay(5000);
}

// Get SMS Content
void GetSMS()
{
  //Get SMS number
  //================================================
  GSM_Nr = RxString;
  //get number
  int t1 = GSM_Nr.indexOf('"');
  GSM_Nr.remove(0, t1 + 1);
  t1 = GSM_Nr.indexOf('"');
  GSM_Nr.remove(t1);

  // Get SMS message
  //================================================
  GSM_Msg = RxString;
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0, t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0, t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0, t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0, t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0, t1 + 1);
  t1 = GSM_Msg.indexOf('"');
  GSM_Msg.remove(0, t1 + 1);
  GSM_Msg.remove(0, 1);
  GSM_Msg.trim();

  Serial.print("Number:"); Serial.println(GSM_Nr);
  Serial.print("SMS:"); Serial.println(GSM_Msg);
}

// Search for specific characters inside RxString
boolean Received(String S)
{
  if (RxString.indexOf(S) >= 0) return true; else return false;
}

// Init GSM Module
void initModule(String cmd, char * res, int t)
{
  while (1)
  {
    Serial.println(cmd);
    GSM.println(cmd);
    delay(100);
    while (GSM.available() > 0)
    {
      if (GSM.find(res))
      {
        Serial.println(res);
        delay(t);
        return;
      }
      else
      {
        Serial.println("Error");
      }
    }
    delay(t);
  }
}

//Fire Alarm System And Gas detection using GSM CALL OR SMS
/*
  Fire Alarm System And Gas detection using GSM CALL OR SMS
*/

int redLed1 = 3;
int redLed2 = 4;
int greenLed = 8;
int buzzer1 = 5; //PWM (~) pin
int buzzer2 = 6; //PWM (~) pin
int gasPin = A0;
int flamePin = 2;
// Your threshold value
int gasSensorThres = 400;

void setup3()
{
  pinMode(redLed1, OUTPUT);
  pinMode(redLed2, OUTPUT);
  pinMode(greenLed, OUTPUT);
  pinMode(buzzer1, OUTPUT);
  pinMode(buzzer2, OUTPUT);
  pinMode(gasPin, INPUT);
  pinMode(flamePin, INPUT);
  Serial.begin(9600);
}

void loop3()
{
  int gasSensor = analogRead(gasPin);
  int flameSensor = digitalRead(flamePin);

  Serial.print("gasPin Value: ");
  Serial.println(gasSensor);
  Serial.print("flamePin Value: ");
  Serial.println(flameSensor);
  delay(1000);

  if (gasSensor > gasSensorThres && flameSensor == LOW)
  {
    digitalWrite(redLed1, HIGH);
    tone(buzzer1, 5000); //the buzzer sound frequency at 5000 Hz
    digitalWrite(redLed2, HIGH);
    tone(buzzer2, 5000); //the buzzer sound frequency at 5000 Hz
    digitalWrite(greenLed, LOW);
  }
  else if (gasSensor > gasSensorThres)
  {
    digitalWrite(redLed1, HIGH);
    tone(buzzer1, 5000); //the buzzer sound frequency at 5000 Hz
    digitalWrite(redLed2, LOW);
    noTone(buzzer2);
    digitalWrite(greenLed, LOW);
  }
  else if (flameSensor == LOW) // HIGH MEANS NO FLAME
  {
    digitalWrite(redLed1, LOW);
    noTone(buzzer1);
    digitalWrite(redLed2, HIGH);
    tone(buzzer2, 5000); //the buzzer sound frequency at 5000 Hz
    digitalWrite(greenLed, LOW);
  }

  else
  {
    digitalWrite(redLed1, LOW);
    digitalWrite(redLed2, LOW);
    noTone(buzzer1);
    noTone(buzzer2);
    digitalWrite(greenLed, HIGH);
  }
}

Google is your friend, it is a common inquiry:

combine arduino sketches

It might involve coming to a full understanding of how each sketch works by itself.

It might raise up serious issues as has been suggested here.

The less planning the authors of the original sketches did for a time when a sketch might want to be combined with another, the harder it will be.

It might require learning, and adopting, a very different way of programming.

Take a google at

arduino two things at once

and

arduino blink without delay

and you'l start seeing things differently, maybe.

a7

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.