Aprende robótica con Arduino en español
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.!
Etiquetas:
Bienvenido a
Aprende Robotica
© 2024 Creado por Lorenzo M. Oliver. [Imágenes licenciadas por Depositphotos.com] Tecnología de