luciorocha
Created January 23, 2017 © GPL3+

Control DC motors trough USB serial port

Control DC motors through USB serial port.

IntermediateFull instructions provided1,273
Control DC motors trough USB serial port

Things used in this project

Story

Read more

Schematics

Serial Port with Java and L298N

serial USB port to control DC motors with L298N motor drive

Code

Control motors with L298N motor drive

Arduino
/*
  Programa para ligar motores via porta serial do Arduino

  Autor: Lucio Agostinho Rocha
  Ultima atualizacao: 01/08/2016
*/

int LED = 13; //pino do led

int IN3 = 10; //IN3 motor = pino 10 no arduino
int IN4 = 11;
int ENB = 9; // ENB eh o pino de controle de velocidade no motor

int IN1 = 6; //IN1 motor = pino 6 no arduino
int IN2 = 5;
int ENA = 3; // ENA eh o pino de controle de velocidade no motor

int TEMPO = 300; //Tempo do movimento

void setup() {
  Serial.begin(9600); //Inicializa comunicação Serial
  pinMode(LED, OUTPUT);//Seta como saida

  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);

  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
}

void loop() {

  //espera um char na serial
  char c = Serial.read();

  switch (c) {

    //roda1 +
    case '1':
      //Acende o led
      digitalWrite(LED, HIGH);

      //Prepara a saida do motor
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      analogWrite(ENA, 255);
      delay(TEMPO);

      //Desliga o motor
      analogWrite(ENA, 0);
      //Acende o led
      digitalWrite(LED, LOW);
      break;

    //roda1 -
    case '2':
      //Acende o led
      digitalWrite(LED, HIGH);

      //Prepara a saida do motor
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      analogWrite(ENA, 255);
      delay(TEMPO);

      //Desliga o motor
      analogWrite(ENA, 0);
      //Acende o led
      digitalWrite(LED, LOW);
      break;      

    //roda2 +
    case '3':
      //Acende o led
      digitalWrite(LED, HIGH);

      //Prepara a saida do motor
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      analogWrite(ENB, 255);
      delay(TEMPO);

      //Desliga o motor
      analogWrite(ENB, 0);
      //Acende o led
      digitalWrite(LED, LOW);
      break;

    //roda2 -
    case '4':
      //Acende o led
      digitalWrite(LED, HIGH);

      //Prepara a saida do motor
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      analogWrite(ENB, 255);
      delay(TEMPO);

      //Desliga o motor
      analogWrite(ENB, 0);
      //Acende o led
      digitalWrite(LED, LOW);
      break;      

    //roda1 e roda2 +
    case '5':
      //Acende o led
      digitalWrite(LED, HIGH);

      //Prepara a saida do motor
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      analogWrite(ENA, 255);

      //Prepara a saida do motor
      digitalWrite(IN3, HIGH);
      digitalWrite(IN4, LOW);
      analogWrite(ENB, 255);
            
      delay(2*TEMPO);

      //Desliga o motor
      analogWrite(ENA, 0);
      //Desliga o motor
      analogWrite(ENB, 0);
      //Acende o led
      digitalWrite(LED, LOW);
      break;

    //roda1 e roda2 -
    case '6':
      //Acende o led
      digitalWrite(LED, HIGH);

      //Prepara a saida do motor
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      analogWrite(ENA, 255);

      //Prepara a saida do motor
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, HIGH);
      analogWrite(ENB, 255);
            
      delay(2*TEMPO);

      //Desliga o motor
      analogWrite(ENA, 0);
      //Desliga o motor
      analogWrite(ENB, 0);
      //Acende o led
      digitalWrite(LED, LOW);
      break;

    default:
      digitalWrite(LED, LOW);
      //Desliga o motor
      analogWrite(ENA, 0);
      //Desliga o motor
      analogWrite(ENB, 0);

  }//fim switch

}

Credits

luciorocha

luciorocha

5 projects • 30 followers

Comments