#define echopin 3 // echo pin #define trigpin 2 // Trigger pin long duration, distance; unsigned long timer1; int status1=0; String readString1; int detect=0; int S_Mode=0; void setup() { pinMode (trigpin, OUTPUT_FAST); pinMode (echopin, INPUT_FAST); Serial.begin(9600); Serial1.begin(9600); timer1=millis(); pinMode(4,INPUT); pinMode(13,OUTPUT); } void loop() { int detect=digitalRead(4); readData(); Serial.print(S_Mode); Serial.print(" "); Serial.print(detect); Serial.print(" "); Serial.println(status1); while(S_Mode==1 && status1==1) { readData(); detect=digitalRead(4); digitalWrite(trigpin,LOW); delayMicroseconds(2); digitalWrite(trigpin,HIGH); delayMicroseconds(10); duration=pulseIn (echopin,HIGH); distance= duration/58.8; Serial.println(distance); if(distance<=10) { digitalWrite(13,LOW); status1=0; S_Mode=0; } } timer1=millis(); while(detect==0 && status1==1) { detect=digitalRead(4); Serial.println(detect); readData(); if(millis()-timer1>=10000) { digitalWrite(13,LOW); status1=0; break; } if(detect==1 && millis()-timer1<30000) { break; } } readString1 = ""; } void readData() { while(Serial1.available()) { char c=Serial1.read(); readString1 +=c; } if(readString1.length()>0) { Serial.println(readString1); if(readString1=="ON") { digitalWrite(13,HIGH); status1=1; S_Mode=0; readString1 = ""; } else if(readString1=="OFF") { digitalWrite(13,LOW); S_Mode=0; status1=0; readString1=""; } else if(readString1=="S_ON") { //digitalWrite(13,HIGH); // status1=0; S_Mode=1; readString1=""; } else if(readString1=="S_OFF") { S_Mode=0; readString1=""; }}}