CCCPaste

"Motor Switch" rev_01

/********* Pleasedontcode.com **********

	Pleasedontcode thanks you for automatic code generation! Enjoy your code!

	- Terms and Conditions:
	You have a non-exclusive, revocable, worldwide, royalty-free license
	for personal and commercial use. Attribution is optional; modifications
	are allowed, but you're responsible for code maintenance. We're not
	liable for any loss or damage. For full terms,
	please visit pleasedontcode.com/termsandconditions.

	- Project: "Motor Switch"
	- Source Code compiled for: Arduino Uno
	- Source Code created on: 2024-03-31 10:11:27

********* Pleasedontcode.com **********/

/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
	/* Control 2 DC Motors using L293D Bridge for forward */
	/* and backward direction, pushbutton for switching */
	/* on and off */
/****** END SYSTEM REQUIREMENTS *****/

/****** DEFINITION OF LIBRARIES *****/
#include 

/****** FUNCTION PROTOTYPES *****/
void setup();
void loop();

/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t SwitchPushbuttonPin = 2;

/***** DEFINITION OF MOTOR CONTROL PINS *****/
const uint8_t Motor1EnablePin = 4;
const uint8_t Motor1DirectionPin1 = 5;
const uint8_t Motor1DirectionPin2 = 6;
const uint8_t Motor2EnablePin = 7;
const uint8_t Motor2DirectionPin1 = 8;
const uint8_t Motor2DirectionPin2 = 9;

/***** DEFINITION OF MOTOR CLASS INSTANCES *****/
L293 motor1(Motor1EnablePin, Motor1DirectionPin1, Motor1DirectionPin2);
L293 motor2(Motor2EnablePin, Motor2DirectionPin1, Motor2DirectionPin2);

/****** Flag to indicate motor state *****/
bool motorsOn = false;

void setup()
{
    pinMode(SwitchPushbuttonPin, INPUT_PULLUP);
    
    motor1.setPWMOffset(10);  // Optional speed offset adjustment for Motor 1
    motor2.setPWMOffset(-10); // Optional speed offset adjustment for Motor 2
}

void loop()
{
    bool switchPushed = digitalRead(SwitchPushbuttonPin) == LOW;
    
    if (switchPushed && !motorsOn)
    {
        // Turn on the motors and make them go forward
        motor1.forward();
        motor2.forward();
        motorsOn = true;
    }
    else if (!switchPushed && motorsOn)
    {
        // Turn off the motors and stop them
        motor1.forceStop(1000); // Perform electrical braking with a 1 second handling time for Motor 1
        motor2.forceStop(1000); // Perform electrical braking with a 1 second handling time for Motor 2
        motorsOn = false;
    }
}