alguem pode me ajudar e me orientar para a programação de um robô com sensor de ultrassom para andar em um labirinto

#include <SoftwareSerial.h>// ultrassom
#include <URMSerial.h>//ultrasom
#include <LiquidCrystal.h>// lcd
#include <Servo.h>// servo
Servo myservo;// nome do servo motor

#define PWMA 3 //controla a velocidade
#define A1N1 4
#define A1N2 5 // Modo de operação
#define MOTOR_A 1// define valor do motor direito como 1
#define PWMB 6// controle de velocidade
#define BIM1 7//modo de operação
#define BIM2 8//modo de operação
#define MOTOR_B 2 //dfine motor da direita com valor 1

byte letra;


LiquidCrystal lcd(12, 11, A5, A4, A3, A2);// tela


URMSerial urm// ultrasom

// declarar variaveis
{
int DistanciaEsquerda = 0;
int DistanciaDireita = 0;

int value;
int getMasurement()


{
//solicitar uma leitura a distância do URM 37
switch (urm.request measurementortime(distancia, value) // pedido

{

case DISTANCE;

return value;
break;
case TEMPERATURE;
return value;
break;
case ERROR;
Serial.printin("ERROR");
break;
case NOTTREADY;

Serial.printin("not rady");

break;

case TIMEOUT;
Serial.printin("Timeout");
break;
}
return -1;
}

void loop()
{// motor vcc
pinMode( PWM A, OUTPUT);
pinMode( A1N1, OUTPUT);
pinMode( A1N2, OUTPUT);

pinMode( PWM B, OUTPUT);
pinMode( BIM 1, OUTPUT);
pinMode( BIM 2, OUTPUT);

pinMode( 13, OUTPUT);

Serial.begin( 9600);

pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);

LCD.begin(16,20;
LCD.print( "Mundo SENAI 2014"); //Tela LCD
delay(1000);
LCD.clear();


myservo. attach (9);

Serial.begin (9600); //ultrassom define a taxa de transmissão para 9600 urm.begin (2,10,9600)
Serial.printin;
}

void loop ()
{
myservo.write(90);// servo vai para posição da variavel "pos"
delay(15);


LCD.clear;
LCD.begin ( 16,2);
LCD.print( getmeasurrement());//mostra a distancia no LCD
LCD.print("cm");
delay(1000);


int Distancia=getMeasurrement();// armazena a distancia na varialvel "Distancia"

if (Distancia<=10)
{
move ( MOTOR_A 0,2);//motor A
move (MOTOR_B 0,2);// motor B

myservo.write(180); //servo olha para esquerda
delay(1000);

DistanciaEsquerda=getMasurement();//armazena o valor da distancia na variavel DistanciaEsquerda

LCd.clear();
LCD.set cursor (1,2);
LCD.clear();
LCD.print("esquerda:");
LCD.print(DistanciaEsquerda);
delay(1000);

myservo.write (0); //servo olha para a direita
delay(1000);
DistanciaDireita=getMesurement();//armazena a variavel "DistanciaDireita"

LCD.clear();
LCD.set cursor (1,2);
LCD.print("Direita");
LCD.print(DistanciDireita);
delay(1000);


if (DistnciaEsquerda>=DistanciaDireita)//se a distancia do objeto da esquerda for maior ou igual a distancia do objeto da direita o robo gira para esquerda
{
move(MOTOR_A, 64,2);
move(MOTOR_B, 64,1;

delay(3000);

}

else // senão o robo gira para a direita

{

move (MOTOR_A, 64,1);
move (MOTOR_B, 64,2);
delay(3000);
}


if (Distancia>10) // se a distancia for maior que 10 cm o robo vai para frente
{
move(MOTOR_A,64,1);// robo vai para frente
move(MOTOR_B,64,1);//robo vai para frente
}

void move(int motor, int speed, int direction)
{
boolem intPin1=LOW;
boolem intPin=HIGH
if (direction=1)
{
inPin1=HIGH;
inPin2=LOW;

}
if (motor=1)
{
digital write (A1N1, inPin1);
digital write (A1N2, inPin2);
analog write( PWM A, speed);
}

Exibições: 271

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço