para ver no osciloscópio os sinais rectangukares de IN1 in2 in3 e IN4 E AS SAIDAS OUT DOS MOTORES EM SINAIS RETANGULARES EM VEZ DO DIGITALWRITER O ANALOGWRITER

/*

Clube de ROBÓTICA ESGC - 2017

Autor Prof. Ramiro Martins

Estudo do controlador de velocidade L298N e

ensaio dos movimentos dos motores

Foram utilizados 2 demos um para os movimentos básicos(frente, trás, direita e esquerda)

e outro para a aceleração e desaceleração

*/

 

// Ligar os pins da controladora aos pins digitais do Arduino

// Motor A da esquerda

int enA = 2;

int in1 = 3;

int in2 = 9;

// Motor B da direita

int enB = 4;

int in3 = 10;

int in4 = 11;

 

void setup()

{

// definir todos os pinos de saída da controladora dos motores

pinMode(enA, OUTPUT);

pinMode(enB, OUTPUT);

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void demoUm()

{

// esta função irá fazer rodar os motores no mesmo sentido a uma velocidade fixa

// liga o motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// a velocidade é definida para 200 o intervalo é de 0 a 255

analogWrite(enA, 200);

// liga o motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// a velocidade é definida para 200 o intervalo é de 0 a 255

analogWrite(enB, 200);

// as funções anteriores serão executadas durante 2 segundos

delay(2000);

// agora troca-se as direções dos motores A e B

// mas primeiro desligam-se os motores

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

// as funções anteriores serão executadas durante 0,2 segundos

delay(200);

//agora sim o motores começam a rodar em sentido contrário

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// as funções anteriores serão executadas durante 2 segundos

delay(2000);

// agora desligam-se os motores

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

// as funções anteriores serão executadas durante 2 segundos

delay(2000);

// rodar para a esquerda seguindo em frente

// liga o motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// a velocidade é definida para 20 rodando mais devagar

analogWrite(enA, 20);

// liga o motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// a velocidade é definida para 200 rodando mais depressa que o A - deslocamento para a esquerda

analogWrite(enB, 200);

// as funções anteriores serão executadas durante 2 segundos

delay(2000);

// rodar para a direita seguindo em frente

// liga o motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// a velocidade é definida para 200 rodando mais depressa que o A - deslocamento para a direita

analogWrite(enA, 200);

// liga o motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// a velocidade é definida para 20 rodando mais devagar

analogWrite(enB, 20);

// as funções anteriores serão executadas durante 2 segundos

delay(2000);

}

void demoDois()

{

// esta função irá ligar os motores em toda a gama de velocidades possíveis acelerando e desacelerando

// nota que a velocidade máxima é determinada pelo próprio motor e a tensão aplicada

// os valores PWM enviados pelo analogWrite () são frações da velocidade máxima possível do hardware

 

// Liga os motores

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// acelera de zero até a velocidade máxima

for (int i = 0; i < 256; i++)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// desacelera da velocidade máxima até a zero

for (int i = 255; i >= 0; i--)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// agora desligam-se os motores

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void loop()

{

// Teste subprograma demoUm

demoUm();

// tempo de espera entre o demoUm e o demoDois

delay(1000);

// Teste subprograma demoDois

demoDois();

// tempo de espera após o demoDois

delay(1000);

}

Exibições: 22

Responder esta

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço