Este robot dispone de un sensor de ultrasonidos frontal que se puede mover a izquierda y derecha para medir la distancia a los obstáculos, en funcion de ello cuando frontalmente detecta uno, se para, "escanea" ambos lados y toma la decisión mejor para girar y seguir avanzando.

Video en acción
#include "MeOrion.h"
#include <SoftwareSerial.h>
#include <Arduino.h>
#include <Wire.h>
MeDCMotor motorIZ(M1);
MeDCMotor motorDE(M2);
MeUltrasonicSensor ojos(PORT_3);
Servo servo; // servo digital
#define CENTRO 60
#define IZDA 115
#define DCHA 5
int servo_pin = mePort[4].s1;
int motorVel = 150; //150
int distance=60;
int distanceIZ;
int distanceDE;
int parada = 10;
//==============================================
void setup() {
Serial.begin(9600);
servo.attach(servo_pin);
servo.write(CENTRO);
}
//==============================================
void loop() {
servo.write(CENTRO);
distance = ojos.distanceCm();
delay(200);
Avanza();
while ((distance>parada) ||(distance <2)){
distance = ojos.distanceCm();
delay(100);
}
Paro();
servo.write(IZDA);
delay(400);
distanceIZ = ojos.distanceCm();
delay(200);
if (distanceIZ == 0) {distanceIZ=100;}
servo.write(DCHA);
delay(400);
distanceDE = ojos.distanceCm();
delay(200);
if (distanceDE == 0) {distanceDE=100;}
servo.write(CENTRO);
Atras();
delay(200);
if (distanceIZ > distanceDE) {
Izquierda();
Serial.print("Distancia dcha ");
Serial.println(distanceDE);
Serial.println(distanceIZ);}
else{
Derecha();
Serial.print("Distancia izda ");
Serial.println(distanceIZ);
Serial.println(distanceDE);}
}
//=========================================
void Paro(){
motorIZ.stop();
motorDE.stop();
}
void Avanza(){
motorIZ.run(-motorVel);
motorDE.run(motorVel);
}
void Atras(){
motorIZ.run(motorVel);
motorDE.run(-motorVel);
}
void Izquierda(){
motorIZ.run(motorVel);
motorDE.run(motorVel);
delay(1000);
Paro();
}
void Derecha(){
motorDE.run(-motorVel);
motorIZ.run(-motorVel);
delay(1000);
Paro();
}
Este otro está provisto de 3 sensores de ultrasonidos uno frontal y dos laterales para realizar una tarea similar a la del anterior.

Video en acción
Este robot dispone de un sensor de ultrasonidos frontal que se puede mover a izquierda y derecha para medir la distancia a los obstáculos, en funcion de ello cuando frontalmente detecta uno, se para, "escanea" ambos lados y toma la decisión mejor para girar y seguir avanzando.

[Video en acción](https://youtu.be/S-UkdVSAO3s "Youtube")
-----
````
#include "MeOrion.h"
#include <SoftwareSerial.h>
#include <Arduino.h>
#include <Wire.h>
MeDCMotor motorIZ(M1);
MeDCMotor motorDE(M2);
MeUltrasonicSensor ojos(PORT_3);
Servo servo; // servo digital
#define CENTRO 60
#define IZDA 115
#define DCHA 5
int servo_pin = mePort[4].s1;
int motorVel = 150; //150
int distance=60;
int distanceIZ;
int distanceDE;
int parada = 10;
//==============================================
void setup() {
Serial.begin(9600);
servo.attach(servo_pin);
servo.write(CENTRO);
}
//==============================================
void loop() {
servo.write(CENTRO);
distance = ojos.distanceCm();
delay(200);
Avanza();
while ((distance>parada) ||(distance <2)){
distance = ojos.distanceCm();
delay(100);
}
Paro();
servo.write(IZDA);
delay(400);
distanceIZ = ojos.distanceCm();
delay(200);
if (distanceIZ == 0) {distanceIZ=100;}
servo.write(DCHA);
delay(400);
distanceDE = ojos.distanceCm();
delay(200);
if (distanceDE == 0) {distanceDE=100;}
servo.write(CENTRO);
Atras();
delay(200);
if (distanceIZ > distanceDE) {
Izquierda();
Serial.print("Distancia dcha ");
Serial.println(distanceDE);
Serial.println(distanceIZ);}
else{
Derecha();
Serial.print("Distancia izda ");
Serial.println(distanceIZ);
Serial.println(distanceDE);}
}
//=========================================
void Paro(){
motorIZ.stop();
motorDE.stop();
}
void Avanza(){
motorIZ.run(-motorVel);
motorDE.run(motorVel);
}
void Atras(){
motorIZ.run(motorVel);
motorDE.run(-motorVel);
}
void Izquierda(){
motorIZ.run(motorVel);
motorDE.run(motorVel);
delay(1000);
Paro();
}
void Derecha(){
motorDE.run(-motorVel);
motorIZ.run(-motorVel);
delay(1000);
Paro();
}
````
____
____
Este otro está provisto de 3 sensores de ultrasonidos uno frontal y dos laterales para realizar una tarea similar a la del anterior.

[Video en acción](https://youtu.be/UTRK2Wwr0Ak "Youtube")
--
editado 17 Oct '16 a las 3:13 pm
