i am trying to prepare a code for irrigation system using gsm and arduino mega.
i just face a problem relating to serial communication which is
exit status 1
{expected constructor, destructor, or type conversion before '(' token}
#include<SoftwareSerial.h>
Serial1(3,2);
#include<LiquidCrystal.h>
LiquidCrystal lcd(14,15,16,17,18,19);
int led1=31;
int led2=32;
int led3=33;
int led4=34;
int flag=0;
String str="";
#define motor1 40
#define motor2 41
#define motor3 42
#define motor4 43
#define sensor1 45
#define sensor2 46
#define sensor3 47
#define sensor4 48
void setup()
{
lcd.begin(16,2);
Serial1.begin(9600);
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(motor1, OUTPUT);
pinMode(sensor1, INPUT_PULLUP);
pinMode(led2, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(sensor2, INPUT_PULLUP);
pinMode(led3, OUTPUT);
pinMode(motor3, OUTPUT);
pinMode(sensor3, INPUT_PULLUP);
pinMode(led4, OUTPUT);
pinMode(motor4, OUTPUT);
pinMode(sensor4, INPUT_PULLUP);
lcd.print("Water Irrigaton");
lcd.setCursor(4,1);
delay(2000);
lcd.clear();
lcd.print("ITX OPPS");
lcd.setCursor(0,1);
lcd.print("Welcomes You");
delay(2000);
gsmInit();
lcd.clear();
lcd.print("System Ready");
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Automatic Mode");
if(digitalRead(sensor1)==1 && flag==0)
{
delay(1000);
if(digitalRead(sensor1)==1)
{
digitalWrite(led1, HIGH);
sendSMS("Low Soil Moisture detected in field 1. Motor1 turned ON");
lcd.begin(16,2);
lcd.setCursor(0,1);
lcd.print("Motor1 ON");
digitalWrite(motor1, HIGH);
delay(2000);
flag=1;}
}
else if(digitalRead(sensor1)==0 && flag==1)
{
delay(1000);
if(digitalRead(sensor1)==0)
{
digitalWrite(led1, LOW);
sendSMS("Soil Moisture is Normalin field 1. Motor1 turned OFF");
digitalWrite(motor1, LOW);
lcd.begin(16,2);
lcd.print("Motor1 OFF");
lcd.setCursor(0,1);
lcd.print("Motor1 OFF");
delay(2000);
flag=0; }
}
if(digitalRead(sensor2)==1 && flag==0)
{
delay(1000);
if(digitalRead(sensor2)==1)
{
digitalWrite(led2, HIGH);
sendSMS("Low Soil Moisture detected in field 2. Motor2 turned ON");
lcd.begin(16,2);
lcd.setCursor(0,1);
lcd.print("Motor2 ON");
digitalWrite(motor2, HIGH);
delay(2000);
flag=1;
}
}
else if(digitalRead(sensor2)==0 && flag==1)
{
delay(1000);
if(digitalRead(sensor2)==0)
{
digitalWrite(led2, LOW);
sendSMS("Soil Moisture is Normal in field 2. Motor2 turned OFF");
digitalWrite(motor2, LOW);
lcd.begin(16,2);
lcd.print("Motor2 OFF");
lcd.setCursor(0,1);
lcd.print("Motor2 OFF");
delay(2000);
flag=0;}
}
if(digitalRead(sensor3)==1 && flag==0)
{
delay(1000);
if(digitalRead(sensor3)==1)
{
digitalWrite(led3, HIGH);
sendSMS("Low Soil Moisture detected in field 3. Motor3 turned ON");
lcd.begin(16,2);
lcd.setCursor(0,1);
lcd.print("Motor3 ON");
digitalWrite(motor3, HIGH);
delay(2000);
flag=1;}
}
else if(digitalRead(sensor3)==0 && flag==1)
{
delay(1000);
if(digitalRead(sensor3)==0)
{
digitalWrite(led3, LOW);
sendSMS("Soil Moisture is Normal in field 3. Motor3 turned OFF");
digitalWrite(motor3, LOW);
lcd.begin(16,2);
lcd.print("Motor3 OFF");
lcd.setCursor(0,1);
lcd.print("Motor3 OFF");
delay(2000);
flag=0;}
}
if(digitalRead(sensor4)==1 && flag==0)
{
delay(1000);
if(digitalRead(sensor4)==1)
{
digitalWrite(led4, HIGH);
sendSMS("Low Soil Moisture detected in field 4. Motor4 turned ON");
lcd.begin(16,2);
lcd.setCursor(0,1);
lcd.print("Motor4 ON");
digitalWrite(motor4, HIGH);
delay(2000);
flag=1;}
}
else if(digitalRead(sensor4)==0 && flag==1)
{
delay(1000);
if(digitalRead(sensor4)==0)
{
digitalWrite(led4, LOW);
sendSMS("Soil Moisture is Normal in field 4. Motor4 turned OFF");
digitalWrite(motor4, LOW);
lcd.begin(16,2);
lcd.print("Motor4 OFF");
lcd.setCursor(0,1);
lcd.print("Motor4 OFF");
delay(2000);
flag=0;}
}
}
void sendSMS(String msg)
{
lcd.clear();
lcd.print("Sending SMS");
Serial1.println("AT+CMGF=1");
delay(500);
Serial1.print("AT+CMGS=");
Serial1.print('"');
Serial1.print("+923411046117");// number
Serial1.print('"');
Serial1.println();
delay(500);
Serial1.println(msg);
delay(500);
Serial1.write(26);
delay(1000);
lcd.clear();
lcd.print("SMS Sent");
delay(1000);
lcd.begin(16,2);
}
void gsmInit()
{
lcd.clear();
lcd.print("Finding Module..");
boolean at_flag=1;
while(at_flag)
{
Serial1.println("AT");
while(Serial1.available()>0)
{
if(Serial1.find("OK"))
at_flag=0;
}
delay(1000);
}
Serial1.println("ATE0");
lcd.clear();
lcd.print("Finding Network..");
boolean net_flag=1;
while(net_flag)
{
Serial1.println("AT+CPIN?");
while(Serial1.available()>0)
{
if(Serial1.find("READY"))
net_flag=0;
break;
}
delay(1000);
}
Serial1.println("AT+CNMI=2,2,0,0,0");
delay(1000);
Serial1.println("AT+CMGF=1");
delay(1000);
Serial1.println("AT+CSMP=17,167,0,0");
lcd.clear();
Serial1.flush();
}