/*
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);
}
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2023 Criado por Marcelo Rodrigues.
Ativado por