// 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.