Motor DC - javierre/nodemcu GitHub Wiki
La placa Motor Shield de NodeMCU permite conectar motores de corriente continua directamente en los conectores azules de Motor A y Motor B.
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();
}