Motor DC - javierre/nodemcu GitHub Wiki

Uso de Motores DC

dcmotor

Mediante la Motor Shield

La placa Motor Shield de NodeMCU permite conectar motores de corriente continua directamente en los conectores azules de Motor A y Motor B.

Motor DC

El siguiente código nos permite probar el funcionamiento de los motores. Para ello consideramos que el motor izquierdo está conectado en Motor A y el derecho en Motor B (ver imagen superior). En función de si conectamos correctamente las bornas de cada motor (A+/A- y B+/B-), dicho motor irá hacia delante cuando realmente así lo deseamos. Si un motor gira en sentido contrario al deseado se puede modificar el código o intercambiar los cables conectados en los terminales azules de la placa. En el código forwardspeed y turnspeed fijan las velocidades lineal y de giro respectivamente (aunque se fijan las mismas velocidades para ambos motores pudiendo fijar por software velocidades distintas con analogWrite(RightMotorSpeed, forwardspeed); y analogWrite(LeftMotorSpeed, forwardspeed);).

#include <Arduino.h>

/*
 SOME DEFFINITIONS, JUST TO REMEMBER
 DO NOT MODIFICATE
    D (arduino) INTERNAL
    D0          16
    D1          5 // I2C Bus SCL (clock) // PWMA (Motor A Speed--> 0 to 1024)
    D2          4 // I2C Bus SDA (data)  // PWMA (Motor B Speed--> 0 to 1024))
    D3          0                        // DIRA (Motor A --> HIGH forward)
    D4          2 // Same as "LED_BUILTIN", but inverted logic (HIGH turns off) // DIRB (Motor B)
    D5          14 // SPI Bus SCK (clock)
    D6          12 // SPI Bus MISO
    D7          13 // SPI Bus MOSI
    D8          15 // SPI Bus SS (CS)
    D9          3 // RX0 (Serial console)
    D10         1 // TX0 (Serial console)
*/



#define RightMotorSpeed 4 // POWERB
#define RightMotorDir 2   // DIRB
#define LeftMotorSpeed 5  // POWERA
#define LeftMotorDir 0    // DIRA

#define turnspeed  800 //0--> 1024
#define forwardspeed 800 //0 --> 1024


void halt()
{
 digitalWrite(RightMotorSpeed, LOW);
 digitalWrite(LeftMotorSpeed, LOW);
 analogWrite(RightMotorSpeed, 0);
 analogWrite(LeftMotorSpeed, 0);
}

void forward()
{
 Serial.println("forward");
 digitalWrite(RightMotorDir, LOW);
 digitalWrite(LeftMotorDir, HIGH);
 analogWrite(RightMotorSpeed, forwardspeed);
 analogWrite(LeftMotorSpeed, forwardspeed);
}

void reverse()
{
 Serial.println("reverse");
 digitalWrite(RightMotorDir, HIGH);
 digitalWrite(LeftMotorDir, LOW);
 analogWrite(RightMotorSpeed, forwardspeed);
 analogWrite(LeftMotorSpeed, forwardspeed);
}

void right()
{
 Serial.println("right");
 digitalWrite(RightMotorDir, HIGH);
 digitalWrite(LeftMotorDir, HIGH);
 analogWrite(RightMotorSpeed, turnspeed);
 analogWrite(LeftMotorSpeed, turnspeed);
}

void left()
{
 Serial.println("left");
 digitalWrite(RightMotorDir, LOW);
 digitalWrite(LeftMotorDir, LOW);
 analogWrite(RightMotorSpeed, turnspeed);
 analogWrite(LeftMotorSpeed, turnspeed);
}



void setup() {

  Serial.begin (9600);

  pinMode(RightMotorSpeed, OUTPUT);
  pinMode(RightMotorDir, OUTPUT);
  pinMode(LeftMotorSpeed, OUTPUT);
  pinMode(LeftMotorDir, OUTPUT);

 
}

void loop() {
 
    forward();
    //right();
    //left();
    //reverse();
}

Mediante el Puente doble H L298N

L298N

L298N Wiring

⚠️ **GitHub.com Fallback** ⚠️