// CAR
#include <Arduino.h>
// Motor pins for L298N
const int motorA1 = 9; // IN1
const int motorA2 = 13; // IN2
const int motorB1 = 12; // IN3
const int motorB2 = 11; // IN4
const int motorB3=10;
// Enable pins for PWM control
//const int enA = 25; // ENA
//const int enB = 26; // ENB
// Joystick pins
const int joyX = A1;
const int joyY = A0;
// MQ-3 sensor pin
//const int mq3Pin = 32;
// Buzzer pin
//const int buzzerPin = 33;
// MQ-3 threshold value for alcohol detection
//const int alcoholThreshold = 500; // Adjust this value based on your sensor calibration
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Motor pins
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
pinMode(motorB3, OUTPUT);
// Enable pins for PWM control
//pinMode(enA, OUTPUT);
//pinMode(enB, OUTPUT);
// Joystick pins
pinMode(joyX, INPUT);
pinMode(joyY, INPUT);
// MQ-3 sensor pin
//pinMode(mq3Pin, INPUT);
// Buzzer pin
//pinMode(buzzerPin, OUTPUT);
// Start with motors off
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
digitalWrite(motorB3, LOW);
// Initialize PWM control
//analogWrite(enA, 0);
//analogWrite(enB, 0);
}
void loop()
{
int xValue = analogRead(joyX);
int yValue = analogRead(joyY);
//int mq3Value = analogRead(mq3Pin);
// Print joystick values and MQ-3 alcohol sensor value
Serial.print("Joystick X: ");
Serial.print(xValue);
Serial.print(" -> Mapped X: ");
Serial.print(map(xValue, 0, 4095, -255, 255));
Serial.print(" | Joystick Y: ");
Serial.print(yValue);
Serial.print(" -> Mapped Y: ");
Serial.print(map(yValue, 0, 4095, -255, 255));
//Serial.print(" | MQ-3 Alcohol Sensor Value: ");
//Serial.println(mq3Value);
// Check alcohol sensor value
//if (mq3Value > alcoholThreshold) {
// Stop all motors
//digitalWrite(motorA1, LOW);
//digitalWrite(motorA2, LOW);
//digitalWrite(motorB1, LOW);
//digitalWrite(motorB2, LOW);
//digitalWrite(motorB3, LOW);
// Activate buzzer
//digitalWrite(buzzerPin, HIGH);
//Serial.println("High alcohol level detected! Vehicle stopped and buzzer activated.");
}
else if ()
{
// Deactivate buzzer
//digitalWrite(buzzerPin, 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(motorA1, HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, HIGH);
digitalWrite(motorB2, LOW);
digitalWrite(motorB3, HIGH);
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(motorA1, LOW);
digitalWrite(motorA2, HIGH);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, HIGH);
digitalWrite(motorB3, LOW);
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(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, HIGH);
digitalWrite(motorB2, LOW);
digitalWrite(motorB3, 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(motorA1, HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
digitalWrite(motorB2, HIGH);
analogWrite(enA, 100); // Adjust PWM duty cycle (0-255) for speed control
analogWrite(enB, 100);
Serial.println("Turning left");
} else {
// Stop all motors
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
digitalWrite(motorB2, LOW);
analogWrite(enA, 0); // Set PWM to 0 for stop
analogWrite(enB, 0);
Serial.println("Stopped");
}
}
delay(10);
}