int X = A1;
int XValue = 0;
int Y = A0;
int YValue = 0;
int SW = A2;
int SWValue = 0;
int FLED = 2;
int BLED = 5;
int LLED = 3;
int RLED = 6;
int SWLED = 7;
const int mq3Value = 32;
const int alcoholThreshold = 500;
const int enA = 25;
const int enB = 26;
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(5, OUTPUT);
pinMode(3, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop()
{
XValue = analogRead(X);
YValue = analogRead(Y);
SWValue = analogRead(SW);
if (mq3Value > alcoholThreshold) {
// Stop all motors
digitalWrite(FLED, LOW);
digitalWrite(BLED, LOW);
digitalWrite(LLED, LOW);
digitalWrite(RLED, LOW);
// Activate buzzer
digitalWrite(SWLED, HIGH);
Serial.println("High alcohol level detected! Vehicle stopped and buzzer activated.");
} else {
// Deactivate buzzer
digitalWrite(SWLED, LOW);
// Map joystick values to motor control
int xMapped = map(XValue, 0, 4095, -255, 255);
int yMapped = map(YValue, 0, 4095, -255, 255);
// Movement control based on joystick position
if (xMapped > 50) {
// Move forward
digitalWrite(FLED, HIGH);
digitalWrite(BLED, LOW);
digitalWrite(LLED, HIGH);
digitalWrite(RLED, LOW);
analogWrite(enA, 90); // Adjust PWM duty cycle (0-255) for speed control
analogWrite(enB, 90);
Serial.println("Moving forward");
} else if (xMapped < -50) {
// Move backward
digitalWrite(FLED, LOW);
digitalWrite(BLED, HIGH);
digitalWrite(LLED, LOW);
digitalWrite(RLED, HIGH);
analogWrite(enA, 100); // Adjust PWM duty cycle (0-255) for speed control
analogWrite(enB, 100);
Serial.println("Moving backward");
} else if (yMapped > 50) {
// Turn right
digitalWrite(FLED, LOW);
digitalWrite(BLED, LOW);
digitalWrite(LLED, HIGH);
digitalWrite(RLED, LOW);
analogWrite(enA, 100); // Adjust PWM duty cycle (0-255) for speed control
analogWrite(enB, 100);
Serial.println("Turning right");
} else if (yMapped < -50) {
// Turn left
digitalWrite(FLED, HIGH);
digitalWrite(BLED, LOW);
digitalWrite(LLED, LOW);
digitalWrite(RLED, LOW);
analogWrite(enA, 100); // Adjust PWM duty cycle (0-255) for speed control
analogWrite(enB, 100);
Serial.println("Turning left");
} else {
// Stop all motors
digitalWrite(FLED, LOW);
digitalWrite(BLED, LOW);
digitalWrite(LLED, LOW);
digitalWrite(RLED, LOW);
analogWrite(enA, 0); // Set PWM to 0 for stop
analogWrite(enB, 0);
Serial.println("Stopped");
delay(2000);
}
}
}