quarta-feira, 22 de agosto de 2018

11º Encontro Carro Robótico com Sensor de Ultrassom

11º Encontro Carro Robótico com Sensor de Ultrassom

Olá turma, nesse dia 27/07/2018, Iniciamos o uso do sensor ultrassônico em nosso carro
fizemos adaptações no sensor conhecemos como funciona um servo motor e realizamos as interconexões e testes.
Conseguimos realizar os testes de medição de distância
Não concluímos o controle do servo.
Fizemos uma demonstração para uma turma de fundamental da sala de informática
Nossas atividades
Mecânica e eletrônica
Vimos o princípio de funcionamento do servo motor.
Instalação do servo motor e sensor ultrassônico no carro.









Programação
Fizemos teste e variações com o código abaixo
//Leitura de distância com o sensor HC-SR04
#include <Ultrasonic.h>
#include <Servo.h>
 Ultrasonic ultrassom(8,9); // define o nome do sensor(ultrassom)
                            //e onde esta ligado o trig(8) e o echo(9) respectivamente
 Servo servoMotor; // Cria objeto de Servo nomeado como servoMotor

long distancia=0;  
int pinoServo = 3;// pino arduino conetado ao servoMotor
int motorD = 5;  //motor Direito
int motorE = 6;  //motor Esquerdo
int sentgiroMD = 10;
int sentgiroME = 11;



void setup()
{
  pinMode(13, OUTPUT);
  pinMode(motorD, OUTPUT);
  pinMode(motorE, OUTPUT);
  pinMode(sentgiroME, OUTPUT);
  pinMode(sentgiroMD, OUTPUT);
  servoMotor.attach(pinoServo);
  servoMotor.write(90); // Inicia motor posição 90 graus
  Serial.begin(9600); //Inicia a comunicação serial
}

void loop()
{
  sensorServo();
 //servoTestar();
 //testeinfra();
 //leituraFina(3);
}//fim loop

//==========MEDIÇÃO ULTRASSONICA==================
//le a distancia n vezes, tira a média e coloca o valor na veriável distancia.
void leituraFina(int vezes){ 
  int le=0;
  for(int x=0;x<vezes; x++){   
    le += ultrassom.Ranging(CM);// ultrassom.Ranging(CM) retorna a distancia em
    delay(10);
  }
  distancia =le/vezes; //media do valor lido
  Serial.print( "distancia ");
  Serial.print( distancia);
  Serial.println( );

}//fim leituraFina
//==========FIM DA MEDIÇÃO ULTRASSONICA==================

//=========TESTA SERVO=============================
void servoTestar(){
  servoMotor.write(15);
  delay(1500);
  servoMotor.write(90);
  delay(1500);
  servoMotor.write(165);
  delay(1500);
}
//=======FIM TESTA SERVO===========================

//======TESTE COM ULTRASSOM  SEM SERVO============================
void testeinfra(){
  leituraFina(3);
  if(distancia>25){
    avancar(254);
  }else{
    parar();
    delay(100);
    recuar(254);
    delay(1000);
    direita(254);
    delay(1000);
  }
}

//===========TESTE SENSOR/SERVO=========
void sensorServo(){
  servoMotor.write(90);
  delay(1500);
  Serial.println( "Frente ");
  leituraFina(4);
  
  servoMotor.write(15);
  delay(1500);
  Serial.print( "direita ");
  leituraFina(4);
  
  servoMotor.write(165); //esqerda do carro a frente
  delay(1500);
  Serial.print( "Esquerda ");
  leituraFina(4);
}
//==========fim TESTE SENSOR/SERVO=========

//===========testainfra==================

//função para o carro avançar e recuar
void vaivem2(){
delay(2000);
 avancar(205);
delay(10000);
parar();
delay(3000);
recuar(170);
delay(8000);  
}
  


//====COMANDOS DE CONTROLE DO MOTOR================
void avancar(int vel)//0 ate 254
{
 digitalWrite(sentgiroME, HIGH);
 digitalWrite(sentgiroMD, HIGH); 
 analogWrite(motorD, vel);
 analogWrite(motorE, vel);

}

void parar()
{
  digitalWrite(motorD, 0);
  digitalWrite(motorE, 0);
  //delay(t);
}

void recuar(int vel)
{
 analogWrite(motorD, vel);
 analogWrite(motorE, vel);
 digitalWrite(sentgiroME, LOW);
 digitalWrite(sentgiroMD, LOW);
}

void direita(int vel)
{
 digitalWrite(sentgiroME, HIGH);
 digitalWrite(sentgiroMD, LOW); //high
 analogWrite(motorD, vel);//0
 analogWrite(motorE, vel);

}

void esquerda(int vel)
{
 digitalWrite(sentgiroME, LOW);//high
 digitalWrite(sentgiroMD, HIGH); 
 analogWrite(motorD, vel);
 analogWrite(motorE, vel);//0

}
//============FIM DOS COMANDOS DO MOTOR=======================

void piscar(int tempo){
  digitalWrite(13, HIGH);
  delay(tempo); // Wait for 1000 millisecond(s)
  digitalWrite(13, LOW);
  delay(tempo); // Wait for 1000 millisecond(s)  
}

No próximo encontro vamos realizar  testes com o servo motor.
Abraço a todos!

Nenhum comentário:

Postar um comentário