commit b4de6853f20916c2197fc96279381f9f9a040b34 Author: Ghassan Yusuf Date: Sun Mar 23 01:21:38 2025 +0300 Add ReadMe diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..3196b7e --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,145 @@ +**L298N_ESP32 Library Documentation** +===================================== + +### Table of Contents +----------------- + +* [Introduction](#introduction) +* [Installation](#installation) +* [Functions](#functions) + + [Constructor](#constructor) + + [begin()](#begin) + + [setMin()](#setmin) + + [setMax()](#setmax) + + [invert()](#invert) + + [forward()](#forward) + + [backward()](#backward) + + [goMin()](#gomax) + + [goMax()](#gomax) + + [setSpeed()](#setspeed) + + [setPercentage()](#setpercentage) + + [override()](#override) + + [stop()](#stop) + + [command()](#command) + +### Introduction +--------------- + +The L298N_ESP32 library is a dual H-bridge motor driver with ESP32 support. It provides a simple and easy-to-use API for controlling DC motors using the L298N IC. + +### Installation +------------- + +1. Install the Arduino IDE. +2. Install the ESP32 board package. +3. Clone or download this repository into your Arduino library folder (`~/.arduino/libraries/L298N_ESP32`). +4. Import the library in your sketch by adding `#include `. + +### Functions +------------- + +#### Constructor +---------------- + +* Initializes the motor driver with the specified pins and channel. +* Parameters: + + `in1`: Pin for input 1 ( HIGH for direction). + + `in2`: Pin for input 2 (HIGH for direction). + + `en`: Pin for enable signal (PWM output). + + `channel`: PWM channel number (optional, default: 0). + +#### begin() +---------------- + +* Initializes the motor driver and sets up the pins. +* Sets the PWM frequency to 30kHz and resolution to 8-bit. + +#### setMin() and setMax() +-------------------------------- + +* Sets the minimum and maximum speed values for the motor. +* Parameters: + + `value`: Minimum/maximum speed value (0-255). + +#### invert() +------------- + +* Inverts the direction of the motor. + +#### forward() and backward() +------------------------------ + +* Sets the motor to move forward or backward. +* Note: These functions override any previous speed setting. + +#### goMin() and goMax() +------------------------- + +* Sets the motor to run at minimum or maximum speed. + +#### setSpeed() and setPercentage() +-------------------------------------- + +* Sets the motor speed using a percentage value (0-100) or an absolute speed value (0-255). +* Note: These functions are equivalent to `setSpeed()` and override any previous setting. + +#### override() +----------------- + +* Manually sets the PWM output value. +* Parameters: + + `value`: PWM output value (0-255). + +#### stop() +------------ + +* Stops the motor by setting the speed to 0. + +#### command() +-------------- + +* Provides a serial interface for interacting with the motor driver. +* Returns the last tried value as an unsigned integer. +* Note: This function is not recommended for use in production code. + +Example usage: + +Here's an example Arduino code that utilizes the `L298N_ESP32` library: + +```c +#include + +// Create an instance of the L298N motor driver +L298N_ESP32 myMotor(2, 3, 4); + +void setup() { + Serial.begin(9600); + myMotor.begin(); +} + +void loop() { + // Set the motor to move forward at maximum speed + myMotor.forward(); + delay(2000); + + // Set the motor to move backward at maximum speed + myMotor.backward(); + delay(2000); + + // Set the motor to run at minimum speed + myMotor.goMin(); + delay(2000); + + // Set the motor to run at 50% of maximum speed + myMotor.setPercentage(50); + delay(2000); + + // Manually set the PWM output value to 150 + myMotor.override(150); + delay(2000); + + // Stop the motor + myMotor.stop(); + delay(2000); +} +``` \ No newline at end of file