

This circuit is designed to control a DC motor using an L298N motor driver, interfaced with an Arduino UNO microcontroller. The control inputs are provided by a pushbutton and a rotary potentiometer. The pushbutton toggles the motor on and off, while the potentiometer adjusts the motor's speed. Additionally, the circuit includes a voice recognition module and a 28BYJ-48 stepper motor controlled by a ULN2003A breakout board, both interfaced with an Arduino Uno R3. Power is supplied through a 2.1mm barrel jack connected to a 12V source and a 4 x AAA battery mount.
pin 1 connected to L298N OUT2pin 2 connected to L298N OUT1OUT1, OUT2 connected to DC Motor12V connected to 2.1mm Barrel Jack POSGND connected to 2.1mm Barrel Jack NEGENA connected to Arduino UNO D9IN1 connected to Arduino UNO D6IN2 connected to Arduino UNO D7POS connected to L298N 12VNEG connected to L298N GNDPin 3 (out) connected to Arduino UNO D4Pin 4 (out) connected to Resistor pin1Pin 2 (in) connected to Arduino UNO 5Vpin1 connected to Pushbutton Pin 4 (out)pin2 connected to Arduino UNO GNDleg1 connected to Arduino UNO 5Vwiper connected to Arduino UNO A0leg2 connected to Arduino UNO GNDD9 connected to L298N ENAD6 connected to L298N IN1D7 connected to L298N IN2D4 connected to Pushbutton Pin 3 (out)5V connected to Pushbutton Pin 2 (in)GND connected to Resistor pin2A0 connected to Rotary Potentiometer wiperVCC connected to Arduino Uno R3 5VGND connected to Arduino Uno R3 GNDRDX connected to Arduino Uno R3 3RTX connected to Arduino Uno R3 2+5V connected to Arduino Uno R3 3.3V0V connected to Arduino Uno R3 GNDIn 1 to In 4 connected to Arduino Uno R3 pins 8 to 11BLUE wire to RED wire connected to corresponding wires of 28BYJ-48 Stepper MotorBLUE to RED wires connected to corresponding wires on ULN2003A Breakout Board+ connected to 2.1mm Barrel Jack POS- connected to 2.1mm Barrel Jack NEG/*
  Motor Control Sketch
  This Arduino sketch is designed to control a DC motor using an L298N motor driver.
  It reads input from a pushbutton and a potentiometer to toggle the motor on/off and control its speed.
  The pushbutton is used to start and stop the motor. When the button is pressed, the motor's
  state is toggled between on and off. A simple debounce mechanism is implemented to prevent
  misreading the pushbutton input.
  The potentiometer is used to adjust the motor speed. The analog reading from the potentiometer
  is mapped to a PWM value that controls the speed of the motor when it is on.
  Connections:
  - L298N ENA connected to Arduino Digital Pin 9 (motorEnablePin)
  - L298N IN1 connected to Arduino Digital Pin 6 (motorInput1)
  - L298N IN2 connected to Arduino Digital Pin 7 (motorInput2)
  - Pushbutton output connected to Arduino Digital Pin 4 (pushButtonPin)
  - Potentiometer wiper connected to Arduino Analog Pin A0 (potPin)
  The code assumes the pushbutton provides a HIGH signal when pressed.
*/
// Define the motor control pins
const int motorEnablePin = 9; // ENA on L298N connected to D9 on Arduino
const int motorInput1 = 6;    // IN1 on L298N connected to D6 on Arduino
const int motorInput2 = 7;    // IN2 on L298N connected to D7 on Arduino
// Define the pushbutton pin
const int pushButtonPin = 4;  // Pushbutton output connected to D4 on Arduino
// Define the potentiometer pin
const int potPin = A0;        // Potentiometer wiper connected to A0 on Arduino
// Variables to keep track of motor state and speed
bool motorEnabled = false;
int motorSpeed = 0;
void setup() {
  // Set the motor control pins as outputs
  pinMode(motorEnablePin, OUTPUT);
  pinMode(motorInput1, OUTPUT);
  pinMode(motorInput2, OUTPUT);
  // Set the pushbutton pin as an input
  pinMode(pushButtonPin, INPUT);
  // Initialize the motor control pins
  digitalWrite(motorEnablePin, LOW);
  digitalWrite(motorInput1, LOW);
  digitalWrite(motorInput2, LOW);
}
void loop() {
  // Read the pushbutton state
  bool buttonState = digitalRead(pushButtonPin);
  // If the button is pressed, toggle the motor state
  if (buttonState == HIGH) {
    motorEnabled = !motorEnabled;
    delay(200); // Debounce delay to prevent misreading the pushbutton input
  }
  // Read the potentiometer value
  int potValue = analogRead(potPin);
  // Map the potentiometer value to a motor speed (0-255)
  motorSpeed = map(potValue, 0, 1023, 0, 255);
  // Control the motor based on the motorEnabled state and motorSpeed
  if (motorEnabled) {
    // Set the motor to spin in one direction
    digitalWrite(motorInput1, HIGH);
    digitalWrite(motorInput2, LOW);
    // Set the motor speed using PWM
    analogWrite(motorEnablePin, motorSpeed);
  } else {
    // Turn off the motor
    digitalWrite(motorInput1, LOW);
    digitalWrite(motorInput2, LOW);
    analogWrite(motorEnablePin, 0);
  }
}
This code is associated with the Arduino UNO microcontroller and is responsible for controlling the DC motor through the L298N driver. It includes functionality for reading the state of a pushbutton and a potentiometer to toggle the motor's power and adjust its speed, respectively.