#define echo 6
#define trig 7
#define outA 4// Red LED
#define outB 3// yellow LED
#define outC 2// Green LED
#define MoveSensorPin 5// инфракрасный датчик
float duration; // time taken by the pulse to return back
float distance; // oneway distance travelled by the pulse
int MoveSensor; //показания инфракрасного датчик4а
const int intruderDistance = 10; // the minimum distance upto which the sensor is able to sense any object
void setup()
{
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(outA, OUTPUT);
digitalWrite(outA, LOW);
pinMode(outB, OUTPUT);
digitalWrite(outB, LOW);
pinMode(outC, OUTPUT);
digitalWrite(outC, LOW);
pinMode(MoveSensorPin, INPUT);
Serial.begin(9600);
}
void loop()
{
time_Measurement();
distance = (float)duration / 29.1 / 2; //преобразуем время в расстояние в см
MoveSensor = digitalRead(MoveSensorPin);
//Serial.println(distance);
Serial.println(MoveSensor);
//alarm_condition();
checkMoveSensor();
}
void time_Measurement()
{ // function to measure the time taken by the pulse to return back
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
}
void checkMoveSensor()
{
if(MoveSensor=HIGH)
{ digitalWrite(outA,HIGH);
digitalWrite(outB,HIGH);
digitalWrite(outC,HIGH);
}
else
{digitalWrite(outA,LOW);
digitalWrite(outB,LOW);
digitalWrite(outC,LOW);
}
}
void alarm_condition()
{ //function to execute the output commands based on the sensor input
if(distance<=10)
{ digitalWrite(outA,LOW);
digitalWrite(outB,LOW);
digitalWrite(outC,HIGH);
}
else if(distance >10 && distance <=20)
{ digitalWrite(outA,LOW);
digitalWrite(outB,HIGH);
digitalWrite(outC,LOW);
}
else if(distance >20 && distance <=30)
{ digitalWrite(outA,HIGH);
digitalWrite(outB,LOW);
digitalWrite(outC,LOW);
}
else
{ digitalWrite(outA,LOW);
digitalWrite(outB,LOW);
digitalWrite(outC,LOW);
}
}