Hola amigos, soy nuevo en esto de la programacion y tengo un gran problema, estoy constuyendo un robot evita obstaculos.  Cualquier ayuda lo agradezco inmensamente.  Este es el programa.

#include <Ultrasonic.h>
#include <Servo.h>

#define MOTOR_1_Adelante 8
#define MOTOR_1_Atras 9
#define MOTOR_2_Adelante 10
#define MOTOR_2_Atras 11

#define TRIG 6
#define ECHO 7

#define SERVO 5

#define Dist_Obstaculo 20.0
#define TURN_DELAY 200


#define LOG false

Ultrasonic ultrasonic(TRIG, ECHO);
Servo headServo;

int AngServo = 90;
int angleStep = 30;

float Distancia = 0;

void setup()
{
pinMode(MOTOR_1_Adelante, OUTPUT);
pinMode(MOTOR_1_Atras, OUTPUT);
pinMode(MOTOR_2_Adelante, OUTPUT);
pinMode(MOTOR_2_Atras, OUTPUT);

stop();

headServo.attach(SERVO); 

if(LOG) Serial.begin( 9600 );
}

void loop()
{

checkDistancia ();

moove();

delay(50);
}

void checkDistancia ()
{
Distancia = ultrasonic.Ranging(CM);
if(LOG) Serial.println(Distancia); 
}

void moove()
{
if(Distancia > Dist_Obstaculo )
{
if(LOG) Serial.println("Adelante "); 

goAdelante();
delay(TURN_DELAY);
}
else
{
stop();

checkObstaculo();
}
}

void checkObstaculo()
{
int obsIzquier = 0;
int obsDerecha = 0;

// Cuenta los Obstaculos desde Izquierda a Derecha
for(AngServo = 0; AngServo <= 180; AngServo += 30)
{
headServo.write(AngServo);
delay(TURN_DELAY);

checkDistancia();
if(Distancia < Dist_Obstaculo && AngServo < 90) obsIzquier++;
else if(Distancia < Dist_Obstaculo) obsDerecha++;
}

if(LOG) Serial.print("TURN"); 

if(obsIzquier && obsDerecha)
{
goAtras ();

delay(TURN_DELAY * 2);

if(obsIzquier < obsDerecha) goIzquier ();
else goDerecha ();

delay(TURN_DELAY);
}
else if(obsDerecha)
{
goIzquier ();

delay(TURN_DELAY);
}
else
{
goAdelante ();

delay(TURN_DELAY);
}
}

void goAdelante ()
{
digitalWrite(MOTOR_1_Adelante, HIGH);
digitalWrite(MOTOR_1_Atras, LOW);
digitalWrite(MOTOR_2_Adelante, HIGH);
digitalWrite(MOTOR_2_Atras, LOW);
}

void goAtras ()
{
digitalWrite(MOTOR_1_Adelante, LOW);
digitalWrite(MOTOR_1_Atras, HIGH);
digitalWrite(MOTOR_2_Adelante, LOW);
digitalWrite(MOTOR_2_Atras, HIGH);
}

void goIzquier ()
{
digitalWrite(MOTOR_1_Adelante, LOW);
digitalWrite(MOTOR_1_Atras, HIGH);
digitalWrite(MOTOR_2_Adelante, HIGH);
digitalWrite(MOTOR_2_Atras, LOW);
}

void goDerecha ()
{
digitalWrite(MOTOR_1_Adelante, HIGH);
digitalWrite(MOTOR_1_Atras, LOW);
digitalWrite(MOTOR_2_Adelante, LOW);
digitalWrite(MOTOR_2_Atras, HIGH);
}

void stop()
{
digitalWrite(MOTOR_1_Adelante, LOW);
digitalWrite(MOTOR_1_Atras, LOW);
digitalWrite(MOTOR_2_Adelante, LOW);
digitalWrite(MOTOR_2_Atras, LOW);
}

Y estos son los errores del compilador

sketch_oct25a:20: error: 'Ultrasonic' does not name a type
sketch_oct25a.ino: In function 'void checkDistancia()':
sketch_oct25a:54: error: 'ultrasonic' was not declared in this scope
sketch_oct25a:54: error: 'CM' was not declared in this scope

Un abrazo a tod@s.!

Visitas: 256

Respuestas a esta discusión

Solucionado amigos, gracias por la ayuda. Quedo inmensamente agradecido.

RSS

Cursos online y tutoriales


(se requiere registro previo gratuito en PortalArduino.com)

Mantenimiento del sitio

© 2024   Creado por Lorenzo M. Oliver.   [Imágenes licenciadas por Depositphotos.com] Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio