#include #define SIM800_TX_PIN 10 #define SIM800_RX_PIN 11 SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN); //Color Sensor Pins int s0=3; int s1=2; int s2=5; int s3=4; int out=7; int Vcc=8; //RGB LED Pins int red = A2; int green = A1; int blue = A3; //RGB variables int R=0; int G=0; int B=0; //variables for storing the rbg values int r[10]; int g[10]; int b[10]; //variables for summing the rgb value int r_sum=0; int g_sum=0; int b_sum=0; // rgb mean value variables int r_mean=0; int g_mean=0; int b_mean=0; //loop variable int n=0;// sum int k=0;// one time msg int j=0;// stop after msg void setup() { pinMode(s0,OUTPUT); pinMode(s1,OUTPUT); pinMode(s2,OUTPUT); pinMode(s3,OUTPUT); pinMode(out,INPUT); pinMode(Vcc,OUTPUT); pinMode(red, OUTPUT); pinMode(green, OUTPUT); pinMode(blue, OUTPUT); digitalWrite(Vcc,HIGH); analogWrite(red,255); analogWrite(green,255); analogWrite(blue,255); Serial.begin(9600); while(!Serial); serialSIM800.begin(9600); delay(5000); } void loop() { for(n=0;n<=10;n++) { digitalWrite(s0,HIGH); digitalWrite(s1,LOW); analogWrite(red,255); analogWrite(green,0); analogWrite(blue,0); digitalWrite(s2,LOW); digitalWrite(s3,LOW); delay(20); R=pulseIn(out,HIGH); analogWrite(red,0); analogWrite(green,0); analogWrite(blue,255); digitalWrite(s2,LOW); digitalWrite(s3,HIGH); delay(20); B=pulseIn(out,HIGH); analogWrite(red,0); analogWrite(green,255); analogWrite(blue,0); digitalWrite(s2,HIGH); digitalWrite(s3,HIGH); delay(20); G=pulseIn(out,HIGH); R=255-R; G=255-G; B=255-B; if(R<0) R=0; if(G<0) G=0; if(B<0) B=0; if(R>255) R=255; if(G>255) G=255; if(B>255) B=255; r[n]=R; g[n]=G; b[n]=B; } n=1; for(n=1;n<=10;n++) { r_sum=r[n]+r_sum; g_sum=g[n]+g_sum; b_sum=b[n]+b_sum; } r_mean=r_sum/10; g_mean=g_sum/10; b_mean=b_sum/10; Serial.print("R: "); Serial.print(r_mean); Serial.print(" "); Serial.print("G: "); Serial.print(g_mean); Serial.print(" "); Serial.print("B: "); Serial.print(b_mean); Serial.print(" "); Serial.print("\n"); control(); arsenic(); r_sum=0; g_sum=0; b_sum=0; r_mean=0; r_mean=0; r_mean=0; analogWrite(red,0); analogWrite(green,0); analogWrite(blue,0); delay(1000); } void control() { if (r_mean>=130 && r_mean<=145) { if (g_mean>=115 && g_mean<=130) { if (b_mean>=215 && b_mean<=230) { Serial.print("\tCONTROL MEDIA\n\n"); } } } } void arsenic() { if (r_mean>=120 && r_mean<=150) { if (g_mean>=80 && g_mean<=140) { if (b_mean>=150 && b_mean<=195) { Serial.print("\tArsenic detected\n\n"); while(j==0) { serialSIM800.write("AT+CMGF=1\r\n"); delay(1000); serialSIM800.write("AT+CMGS=\"+xxxxxxxxxxxx\"\r\n"); // add first phone number delay(1000); serialSIM800.write("Hi, it's MAX! I think there is some Arsenic in your Fish Tank. Urgent inspection needed!"); delay(1000); serialSIM800.write((char)26); delay(5000); serialSIM800.write("AT+CMGF=1\r\n"); delay(1000); serialSIM800.write("AT+CMGS=\"+xxxxxxxxxxxx\"\r\n"); // add second phone number delay(1000); serialSIM800.write("Hi, it's MAX! I think there is some Arsenic in your Fish Tank. Urgent inspection needed!"); delay(1000); serialSIM800.write((char)26); delay(1000); j=1; } } } } }