quinta-feira, 9 de julho de 2015

Arduino carro com motores DC e ultra som

Carro motores DC Arduino


Carro fabricado utilizando dois motores dc com redução acoplada e chassi (uma placa de plastico).
Arduino Uno com shield motor ( ADA FRUIT) e uma bateria 9V
sensor de ultra som programado para detectar objetos a 30 cm 
Quando localiza objeto da ré utilizando uma roda, girando aproximada mente 90 graus 
Depois segue em frente.
Utiliza saídas  para o ultra som : A4 Trigger e A5 Echo (envia sinal e recebe eco) 
Alimentação do ultra som 5v e gnd.
Motores na saídas M1 e M2
Quando conectado USB enviar status da direção que esta seguindo ( << ou >>) monitor serial

Qualquer duvida ou precisando de ajuda escreva nos comentários deste blog.
visite: www.adafruit.com
         www.arduino.cc







Codigo abaixo:

// Adafruit Motor shield library
// copyright Enei Donizeti, 2015
// this code is public domain, enjoy!

#include <AFMotor.h>
#include <Ultrasonic.h>

#define TRIGGER_PIN A4  
#define ECHO_PIN A5   

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

long microsec = 0;
float distanciaCM = 0;

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Motor test!");

  // turn on motor
  motor1.run(RELEASE);
  motor2.run(RELEASE);
}

void loop() {
  uint8_t i;
  
   {  
  //Lendo o sensor
  long microsec = ultrasonic.timing(); 

  //Convertendo a distância em CM
  distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM); 
}

  if (distanciaCM > 30) { //leitura da distancia
    
  Serial.println(">>"); 
  motor1.run(FORWARD);
  motor2.run(FORWARD);
    motor1.setSpeed(150);  
    motor2.setSpeed(150); 

  } 
  if (distanciaCM < 30) { // leitura da distancia 
    
  Serial.println("PARADA");
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  delay(1000);
  
 Serial.println("<<");
  motor1.run(BACKWARD);
  motor2.run(RELEASE);
    motor1.setSpeed(150);
    motor2.setSpeed(150);  
    delay(1000);  
   

  Serial.println("PARADA");
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  delay(500);
  
  }
  }