当前位置:网站首页>L298N module use

L298N module use

2022-07-05 08:29:00 Sharing master

The module pin description is as follows :

notes : Built in 5V Power supply , There is no need to pick it up from the outside 5V Input

 

 

Input information :

ENA and ENB The pins of the words are respectively connected to support PWM Output any digital port , And passed in the program AnalogWrite() Statement to adjust the speed .

Schematic diagram of circuit connection :

 

 

Program :

/* *****************************************************************
 * *****************************************************************
 * 
 *
 * *****************************************************************/

#define BLINKER_WIFI

#include <Blinker.h>
#define        STOP            0
#define        FORWARD         1
#define        BACKWARD        2
#define        TURNLEFT        3
#define        TURNRIGHT       4
 
// Motor control pin 
#define LEFT_MOTOR1        D1
#define LEFT_MOTOR2        D2
#define RIGHT_MOTOR1       D3
#define RIGHT_MOTOR2       D4
#define LEFT_ENA           D7
#define RIGHT_ENB          D8
char auth[] = "2168d525043de";
char ssid[] = "000";
char pswd[] = "000";

//  New component object 
BlinkerButton Button0("btn-abc");
BlinkerButton Button1("btn-abd");
BlinkerButton Button2("btn-abe");
BlinkerButton Button3("btn-abf");
BlinkerButton Button4("btn-abg");
BlinkerButton Button5("btn-all");
BlinkerNumber Number1("num-abc");
int cmd = 1;
int counter = 0;

//  Press the key to execute the function 
void button0_callback(const String & state)
{
    BLINKER_LOG("get button0 state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
void button1_callback(const String & state) {
    BLINKER_LOG("get button1 state: ", state);
        motor_run(1);
        Button1.print("on");
        Button2.print("off");
        Button3.print("off");
        Button4.print("off");
}
void button2_callback(const String & state) {
    BLINKER_LOG("get button2 state: ", state);
        motor_run(2);
        Button1.print("off");
        Button2.print("on");
        Button3.print("off");
        Button4.print("off");
}
void button3_callback(const String & state) {
    BLINKER_LOG("get button3 state: ", state);
        motor_run(3);
        Button1.print("off");
        Button2.print("off");
        Button3.print("on");
        Button4.print("off");
}
void button4_callback(const String & state) {
    BLINKER_LOG("get button4 state: ", state);
        motor_run(4);
        Button1.print("off");
        Button2.print("off");
        Button3.print("off");
        Button4.print("on");
}
void button5_callback(const String & state) {
    BLINKER_LOG("get button5 state: ", state);
    Button1.print("off");
    Button2.print("off");
    Button3.print("off");
    Button4.print("off");
    motor_run(0);
                        digitalWrite(LEFT_MOTOR1, HIGH);
                        digitalWrite(LEFT_MOTOR2, HIGH);
                        digitalWrite(RIGHT_MOTOR1, HIGH);
                        digitalWrite(RIGHT_MOTOR2, HIGH);
}
//  If unbound components are triggered , Then the content will be executed 
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}

void setup()
{
    //  Initialize serial port 
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    
    //  Initialization has LED Of IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);

    pinMode(LEFT_MOTOR1, OUTPUT);
    pinMode(LEFT_MOTOR2, OUTPUT);
    pinMode(RIGHT_MOTOR1, OUTPUT);
    pinMode(RIGHT_MOTOR2, OUTPUT);
    pinMode(LEFT_ENA,OUTPUT);
    pinMode(RIGHT_ENB,OUTPUT);
    //  initialization blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    motor_run(STOP);
        Button0.attach(button0_callback);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Button4.attach(button4_callback);
    Button5.attach(button5_callback);
}
/* *****************************************************************
 *
      Motor control letter 
 * 
 * *****************************************************************/
int highSpeed = 200;
int lowSpeed = 100;
 
void motor_run(int cmd)
{
        switch(cmd)
        {
                case FORWARD:
                        Serial.println("FORWARD"); // Output status 
                        analogWrite(LEFT_ENA,highSpeed);
                        digitalWrite(LEFT_MOTOR1, LOW);
                        digitalWrite(LEFT_MOTOR2, HIGH);
                        analogWrite(RIGHT_ENB,highSpeed);
                        digitalWrite(RIGHT_MOTOR1, LOW);
                        digitalWrite(RIGHT_MOTOR2, HIGH);
                break;
                case BACKWARD:
                        Serial.println("BACKWARD"); // Output status 
                        digitalWrite(LEFT_MOTOR1,  HIGH);
                        digitalWrite(LEFT_MOTOR2, LOW);
                        digitalWrite(RIGHT_MOTOR1, HIGH);
                        digitalWrite(RIGHT_MOTOR2, LOW);
                break;
                case TURNLEFT:
                        Serial.println("TURN  LEFT"); // Output status 
                        analogWrite(LEFT_ENA,lowSpeed);
                        analogWrite(RIGHT_ENB,highSpeed);
                        digitalWrite(LEFT_MOTOR1, LOW);
                        digitalWrite(LEFT_MOTOR2, HIGH);//C
                        digitalWrite(RIGHT_MOTOR1, LOW);
                        digitalWrite(RIGHT_MOTOR2, HIGH);
                break;
                case TURNRIGHT:
                        Serial.println("TURN  RIGHT"); // Output status 
                        analogWrite(LEFT_ENA,highSpeed);
                        analogWrite(RIGHT_ENB,lowSpeed);
                        digitalWrite(LEFT_MOTOR1, LOW);
                        digitalWrite(LEFT_MOTOR2, HIGH);
                        digitalWrite(RIGHT_MOTOR1, LOW);//C
                        digitalWrite(RIGHT_MOTOR2, HIGH);
                break;
                case STOP:
                default:
                        Serial.println("STOP"); // Output status 
                        analogWrite(LEFT_ENA,1);
                        analogWrite(RIGHT_ENB,1);
                        digitalWrite(LEFT_MOTOR1, LOW);
                        digitalWrite(LEFT_MOTOR2, LOW);
                        digitalWrite(RIGHT_MOTOR1, LOW);
                        digitalWrite(RIGHT_MOTOR2, LOW);
                break;
        }
}

void loop() {
    Blinker.run();
}

 

原网站

版权声明
本文为[Sharing master]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140544213967.html