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
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.
Vimos o princípio de funcionamento do servo motor.
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)
}
//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