Ir ao conteúdo
  • Cadastre-se

Arduino Carrinho Rastreador com Arduino


Posts recomendados

Boa Tarde!

Fiz uma programação para o carrinho rastreador, e deu tudo certo, mas quando eu coloco para enviar dados para a porta serial aumenta muito o tempo de resposta, ficando muito lento a movimentação do servo motor, preciso da transmissão serial pois vou colocar um bluetooth para desativar o carrinho a distância. Alguém poderia me dar uma dica? vou disponibilizar o código e o vídeo no youtube.Link para ver o projeto no youtube

Veja o carrinho no YouTube: 

 

Obrigado.

//Inclusão de Bibliotecas
#include <Servo.h>
#include <LiquidCrystal.h>  
#include <Ultrasonic.h>
  
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  //definição dos pinos para o LCD

//Configuração do Sensor Ultrassonico
#define pino_trigger 12  //Pino trigger ligado ao pino 0 do Arduino 
#define pino_echo 13    //Pino echo ligado ao pino 1 do Arduino                          
Ultrasonic ultrasonic(pino_trigger, pino_echo);  //definição dos pinos para o sensor ultrassonico
int SensorUltrassonico();   //Prototipagem da função
float cmMsec;         //Nomea a variavel que vai guardar o valor da distancia medida, em centimetros

Servo myservo;  // Criação do objeto servo
int pos = 30;    //Portas para comando das rodas

//Pinos para ligação dos reles
//RODA DIREITA
const int releA1 = A3; //Altere a ordem das portas para ajustar o movimento das rodas
const int releA2 = A4;
//RODA ESQURDA
const int releB1 = A1;
const int releB2 = A2;

void setup() {
  myservo.attach(3);  // attaches the servo on pin 9 to the servo object
  pinMode(releA1, OUTPUT);
  pinMode(releA2, OUTPUT);
  pinMode(releB1, OUTPUT);
  pinMode(releB2, OUTPUT);
  //Configuração do Display 16x2 e mostrar a palavra nele
  lcd.begin(16, 2);  
  lcd.setCursor(0,0);              
  lcd.print("pos:");
  Serial.begin(9600);
}

void loop() {
   for (pos = 30; pos <= 60; pos++) { //Move o eixo do servo de 0 a 90 graus, de um em um grau
    myservo.write(pos);              // Envia o valor do grau para o comando de movimentação 
    delay(15);                       // Aguarda 15 ms chegar na posição mover o eixo do servo
    lcd.setCursor(5,0);  
    lcd.print(pos);                  //Printa a posição no display
    SensorUltrassonico();            //Chama a função SensorUltrassonico()
   
    Serial.println(cmMsec); 
    
  }
  for (pos = 60; pos >= 30; pos--) { //Move o eixo do servo de 90 a 0 graus, de um em um grau
    myservo.write(pos);              // Envia o valor do grau para o comando de movimentação 
    delay(15);                       // Aguarda 15 ms chegar na posição mover o eixo do servo
    lcd.setCursor(5,0);  
    lcd.print(pos);                  //Printa a posição no display
    SensorUltrassonico();            //Chama a função SensorUltrassonico()
    
    Serial.println(cmMsec);
  }
}

//Função para controle do sensor Ultrassonico e movimentação das rodas
int SensorUltrassonico()
{
  long microsec = ultrasonic.timing();                     //Armazena o tempo na variavel
  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);   //função que calcula distancia em funcao do tempo
  
  if (cmMsec < 30)       //Entra nesta condiçao quando o objeto está a menos de 50 centimetros de distância
  {    //ESQUERDA
    if (pos > 45)           //Entra nesta condiçao quando o objeto está posicionado a um angulo maior ou igual a 55 graus
      {
      lcd.setCursor(0,1);  
      lcd.print("                ");
      lcd.setCursor(0,1);  
      lcd.print(cmMsec);                    //Printa a distância no display
      lcd.setCursor(8,1);  
      lcd.print("esq");                     //Printa a direção do objeto no display
      
      //Pausa
      digitalWrite(releA1, HIGH);
      digitalWrite(releA2, HIGH);
      digitalWrite(releB1, HIGH);
      digitalWrite(releB2, HIGH);
      delay(100);
      //Move para direita
      digitalWrite(releA1, LOW);
      digitalWrite(releA2, HIGH);
      digitalWrite(releB1, HIGH);
      digitalWrite(releB2, LOW);
      delay(300);
      digitalWrite(releA1, HIGH);
      digitalWrite(releA2, HIGH);
      digitalWrite(releB1, HIGH);
      digitalWrite(releB2, HIGH);
      delay(100);
      }
      
    else         //Entra nesta condição quando o objeto está posicionado a um angulo menor ou igual que 35 graus
      {       //DIREITA
      lcd.setCursor(0,1);  
      lcd.print("                ");
      lcd.setCursor(0,1);  
      lcd.print(cmMsec);                 //Printa a distância no display
      lcd.setCursor(8,1);  
      lcd.print("dir");                  //Printa a direção do objeto no display
      
      //Pausa
      digitalWrite(releA1, HIGH);
      digitalWrite(releA2, HIGH);
      digitalWrite(releB1, HIGH);
      digitalWrite(releB2, HIGH);
      delay(100);
      //Move para esquerda
      digitalWrite(releA1, HIGH);
      digitalWrite(releA2, LOW);
      digitalWrite(releB1, LOW);
      digitalWrite(releB2, HIGH);
      delay(300);
      digitalWrite(releA1, HIGH);
      digitalWrite(releA2, HIGH);
      digitalWrite(releB1, HIGH);
      digitalWrite(releB2, HIGH);
      delay(100);
      }
    } 
   else //Enquanto nao encontra nenhum objeto, continua em frente
   {    //CENTRO
    lcd.setCursor(0,1);  
      lcd.print(" Nada Encontrado");
      //Comando para mover as rodas
      //Move para esquerda
      digitalWrite(releA1, HIGH);
      digitalWrite(releA2, LOW);
      digitalWrite(releB1, HIGH);
      digitalWrite(releB2, LOW);
   }
}

 

 

Carrinho_VersãoFinal.rar

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!