The circuit in question appears to be a complex system involving an Arduino UNO microcontroller, various sensors (including IR sensors and an ultrasonic sensor), a motor driver, relays, LEDs, a buzzer, and several other components. The system is likely designed for some form of automation or robotics application, given the presence of motors and sensors that can detect obstacles. The Arduino UNO is used as the central processing unit, interfacing with the HC-05 Bluetooth module for wireless communication, and controlling the motors through the L298N motor driver.
#define in1 5 //L298n Motor Driver pins.
#define in2 6
#define in3 10
#define in4 11
#define EXTRA 4
const int trigPin = 9;
const int echoPin = 18;
long duration;
int distance;
#define light_FR 13 //LED Front Right pin A0 for Arduino Uno
//#define light_FL 15 //LED Front Left pin A1 for Arduino Uno
#define light_BR 12 //LED Back Right pin A2 for Arduino Uno
//#define light_BL 17 //LED Back Left pin A3 for Arduino Uno
#define horn_Buzz 7 //Horn Buzzer pin A4 for Arduino Uno
int command; //Int to store app command state.
int Speed = 204; // 0 - 255.
int Speedsec;
int buttonState = 0;
int lastButtonState = 0;
int Turnradius = 0; //Set the radius of a turn, 0 - 255 Note:the robot will malfunction if this is higher than int Speed.
int brakeTime = 45;
int brkonoff = 1; //1 for the electronic braking system, 0 for normal.
boolean lightFront = false;
boolean lightBack = false;
boolean horn = false;
boolean extra = false;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT);
pinMode(EXTRA,OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(14,INPUT);
pinMode(light_FR, OUTPUT);
// pinMode(light_FL, OUTPUT);
pinMode(light_BR, OUTPUT);
// pinMode(light_BL, OUTPUT);
pinMode(horn_Buzz, OUTPUT);
Serial.begin(9600); //Set the baud rate to your Bluetooth module.
}
void loop() {
// Ultrasonic sensor measurement routine
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.println(distance);
// Obstacle avoidance and horn alert
if(distance < 25){
Stop();
delay(100);
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
delay(500);
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
}
if(distance < 25){
digitalWrite(horn_Buzz,1);
delay(50);
digitalWrite(horn_Buzz,0);
delay(50);
digitalWrite(horn_Buzz,1);
delay(50);
digitalWrite(horn_Buzz,0);
delay(50);
digitalWrite(horn_Buzz,1);
delay(50);
digitalWrite(horn_Buzz,0);
}
// IR sensor detection and horn alert
if (digitalRead(14) == HIGH){
// ... similar code for IR sensor detection and response
}
// Command processing from Bluetooth module
if (Serial.available() > 0) {
command = Serial.read();
Stop(); //Initialize with motors stopped.
// Light and horn control based on command
if (lightFront) {digitalWrite(light_FR, HIGH);}
if (!lightFront) {digitalWrite(light_FR, LOW);}
if (lightBack) {digitalWrite(light_BR, HIGH);}
if (!lightBack) {digitalWrite(light_BR, LOW);}
if (horn) {digitalWrite(horn_Buzz, HIGH);}
if (!horn) {digitalWrite(horn_Buzz, LOW);}
if (extra) {digitalWrite(EXTRA, HIGH);}
if (!extra) {digitalWrite(EXTRA, LOW);}
// Motor control based on command
switch (command) {
case 'F':
forward();
break;
// ... other cases for different commands
}
// Speed adjustment based on command
Speedsec = Turnradius;
if (brkonoff == 1) {
brakeOn();
} else {
brakeOff();
}
}
}
// Motor control functions
void forward() {
analogWrite(in1, Speed);
analogWrite(in3, Speed);
}
// ... other motor control functions
void Stop() {
analogWrite(in1, 0);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, 0);
}
void brakeOn() {
// Electronic braking system