int night= 1000; // GUESSING ;; there is a limitation in arduino it cannot take more then 1000 and it supposed to be 1500
int distaceinside = 100; // 3 cm gussing
int distanceoutside= 200; // 7 cm guessing
int AlarmingTime= 3000; //guessing
int Interval;
int Blinking = 100 ;
int SwitchValue; // if 0 inside (by defult)
int safedistance =200 ;
int distance1;
int distance2;
// Ultra
#define ECHO2 7 /////////////////////
#define TRIG2 8 /////////////////////
#define ECHO1 2 /////////////////////
#define TRIG1 3 /////////////////////
#define SOUND_SPEED 0.0343 //////////////////////
// white led
#define whiteled 4 //////////////////////////
// red light
#define RedLED 5 /////////////////////////////
// buzzer
#define buzer 6/////////////////////////
// pulldown switch
#define Theswitch 19 /////////////////////////
// Edge
#define TheIR1 15 /////////////////////////
#define TheIR2 16 /////////////////////////
//LDR
#define photoreLDR A0//////////////////////////
void setup() {
Serial.begin(115200);
pinMode(18 , OUTPUT);
// ultra
pinMode(TRIG1, OUTPUT );
pinMode(ECHO1, INPUT);
pinMode(TRIG2, OUTPUT );
pinMode(ECHO2, INPUT);
// LDR
pinMode(photoreLDR, INPUT );
//
pinMode(whiteled, OUTPUT );
pinMode(RedLED, OUTPUT );
pinMode(buzer, OUTPUT );
pinMode(Theswitch, INPUT_PULLUP );
attachInterrupt(digitalPinToInterrupt(19), IndoorOrOutdoor, CHANGE );//2, 3, 18, 19, for intrrupt
}
// ultra get distance
void getDistance1() {
delayMicroseconds(10); digitalWrite(TRIG1, HIGH); delayMicroseconds(10); digitalWrite(TRIG1, LOW);
int T1 = pulseIn( ECHO1 , HIGH );
distance1 = (T1 * SOUND_SPEED)/2; }
void getDistance2() {
delayMicroseconds(10); digitalWrite(TRIG2, HIGH); delayMicroseconds(10); digitalWrite(TRIG2, LOW);
int T2 = pulseIn( ECHO2 , HIGH );
distance2 = (T2 * SOUND_SPEED)/2; }
void MoveForward() { }
void MoveBackward() { }
void loop() {
Serial.println(safedistance);
//know Inside or outside and get safe distance value
// IndoorOrOutdoor();
// To operate motor
getDistance1() ;
getDistance2() ;
if ( distance1 > safedistance) {
// CAR CANT MOVE FORWARD ADD CODE HERE////////////////////////////////
// Alarming system
int currenttime1= millis();
Interval= currenttime1 + AlarmingTime;
while ( Interval >= millis()) {
/////
MoveBackward() ;
////
digitalWrite(buzer, HIGH );
// IndoorOrOutdoor() ;// check if user switched from out to in so safe distance chnaged
getDistance1() ; // check distance if obstacle moved away
if ( distance1 > safedistance) { Interval= 0 ; }
else {
if ( millis() <= (currenttime1 + Blinking) ){
digitalWrite(RedLED, HIGH ); }
if ( millis() > (currenttime1 + Blinking) ){
digitalWrite(RedLED, LOW ); }
if ( millis() >= (currenttime1 + Blinking*2 ) ) { // Blinking*2 for On, Off
currenttime1 = millis() ;
}
}
}
digitalWrite(RedLED, LOW);digitalWrite( buzer , LOW); }
if ( distance2 > safedistance) {
// CAR CANT MOVE BACKWARD ADD CODE HERE////////////////////////////////
//Alarming system
int currenttime1= millis();
Interval= currenttime1 + AlarmingTime;
while ( Interval >= millis()) {
///////
MoveForward() ;
////////
digitalWrite(buzer, HIGH );
// IndoorOrOutdoor() ;// check if user switched from out to in so safe distance chnaged
getDistance2() ; // check distance if obstacle moved away
if ( distance2 > safedistance) { Interval= 0 ; }
else {
if ( millis() <= (currenttime1 + Blinking) ){
digitalWrite(RedLED, HIGH ); }
if ( millis() > (currenttime1 + Blinking) ){
digitalWrite(RedLED, LOW ); }
if ( millis() >= (currenttime1 + Blinking*2 ) ) { // Blinking*2 for On, Off
currenttime1 = millis() ;
}
}
}
digitalWrite(RedLED, LOW);digitalWrite( buzer , LOW);
}
}
// In or out
void IndoorOrOutdoor() { // ////// assuming outdoor 1 indoor 0
if (digitalRead(Theswitch) == 1) { safedistance = distaceinside; }
else { safedistance = distanceoutside; }
// LDR check lights to turn On/OFF
int LDRvalue= analogRead(photoreLDR);
if (LDRvalue >= night ) {
digitalWrite( whiteled , HIGH);}
else { digitalWrite( whiteled , LOW);
}
}