RealJoia TeknoMydia
Carrinho Autonomo

Arduino UNO


Ponte H L298N


Sensor Ultrassonico HC-SR04


Carrinho parte de Baixo

Motores parte interna

Motores parte externa

Carrinho com Sensor Ultrasonico

Esquema Arduino para o Carrinho Autonomo

Esquema da Pinagem para o Carrinho Autonomo

// Autor Joaquim Herdy Menezes - Joahermen - 201811
// Motor Shield Ponte H L298N

#include "Ultrasonic.h"

#define Sinal 6                         // Trigger
#define Radar 7                         // Echo

int EnablDir = 10;                      // ENB
int EnablEsq = 11;                      // ENA
int MotorDirM = 8;                      // N4
int MotorDirW = 9;                      // N3
int MotorEsqM = 12;                     // N2
int MotorEsqW = 13;                     // N1
int Veloz;

Ultrasonic ultrasonic(6,7);

int Distanc = 0;
int SensorDir = 0;
int SensorEsq = 0;

void setup()   {
  Serial.begin(9600);                   // Seta Frequencia para o Sensor
  pinMode(MotorDirM, OUTPUT);           // Seta para Saida de Dados
  pinMode(MotorDirW, OUTPUT);           // Seta para Saida de Dados
  pinMode(MotorEsqM, OUTPUT);           // Seta para Saida de Dados
  pinMode(MotorEsqW, OUTPUT);           // Seta para Saida de Dados
  pinMode(Sinal, OUTPUT);               // Seta para Saida de Dados
  pinMode(Radar, INPUT);                // Seta para Entrada de Dados
}

void loop()  {
  Veloz = 191;                          // Fixa os Motores em 3/4 da Velocidade Maxima
  Avansar();                            // Avansa
  delay(100);                           // Por milessegundos  
  Distanc = Sensor();                   // Verifica Distancia
  Serial.println(Distanc);
  delay(10);

  if(Distanc <= 30){                    // Se Distanc menor que 30 centimetros
    Esquerda();                         // Gira para a Esquerda
    delay(400);                         // Por milessegundos
    Parar();                            // Para
    delay(100);                         // Por milessegundos
    SensorEsq = Sensor();               // Vai para SubRotina verificar distancia
    Serial.print(" <- = ");
    Serial.println (SensorEsq);
    Direita();                          // Gira para a Direita
    delay(800);                         // Por milessegundos
    Parar();                            // Parar
    delay(100);                         // Por milessegundos
    SensorDir = Sensor();               // Vai para SubRotina verificar distancia
    Serial.print(" -> = ");
    Serial.println(SensorDir);
  if(SensorDir >= SensorEsq){           // Se distancia Direita maior ou igual Esquerda
    Serial.println(" ---> ");
    Avansar();                          // Avansa
    }
  else{
    Esquerda();                         // Gira para a Esquerda
    delay(1200);
    Parar();	
    delay(100);
    Serial.println(" <--- ");
    Avansar();
    }
  }  
}

void Avansar(){                         // Avansar
  digitalWrite(MotorDirM, HIGH);
  digitalWrite(MotorDirW, LOW);
  digitalWrite(MotorEsqM, HIGH);
  digitalWrite(MotorEsqW, LOW);
  analogWrite(EnablDir, Veloz);
  analogWrite(EnablEsq, Veloz);
}

void Recuar(){                          // Recuar
  digitalWrite(MotorDirM, LOW);
  digitalWrite(MotorDirW, HIGH);
  digitalWrite(MotorEsqM, LOW);
  digitalWrite(MotorEsqW, HIGH);
  analogWrite(EnablDir, Veloz);
  analogWrite(EnablEsq, Veloz);
}

void Direita(){                         // Direita
  digitalWrite(MotorDirM, LOW);
  digitalWrite(MotorDirW, HIGH);
  digitalWrite(MotorEsqM, HIGH);
  digitalWrite(MotorEsqW, LOW);
  analogWrite(EnablDir, Veloz);
  analogWrite(EnablEsq, Veloz);
}

void Esquerda(){                        // Esquerda
  digitalWrite(MotorDirM, HIGH);
  digitalWrite(MotorDirW, LOW);
  digitalWrite(MotorEsqM, LOW);
  digitalWrite(MotorEsqW, HIGH);
  analogWrite(EnablDir, Veloz);
  analogWrite(EnablEsq, Veloz);
}

void Parar(){                           // Parar
  digitalWrite(MotorDirM, LOW);
  digitalWrite(MotorDirW, LOW);
  digitalWrite(MotorEsqM, LOW);
  digitalWrite(MotorEsqW, LOW);
  analogWrite(EnablDir, 0);
  analogWrite(EnablEsq, 0);
}

int Sensor(){                           // Verifica distancia
  digitalWrite(Sinal, LOW);
  delayMicroseconds(2);
  digitalWrite(Sinal, HIGH);
  delayMicroseconds(10);
  digitalWrite(Sinal, LOW);
  int Distanc = (ultrasonic.Ranging(CM));
  return(Distanc);
}

Codigo do Carrinho Autonomo