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.

57d283b9259ce.jpg

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.

57d2853b84083.jpg

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. ![57d283b9259ce.jpg](serve/attachment&path=57d283b9259ce.jpg) [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. ![57d2853b84083.jpg](serve/attachment&path=57d2853b84083.jpg) [Video en acción](https://youtu.be/UTRK2Wwr0Ak "Youtube") --
editado 17 Oct '16 a las 3:13 pm

Qué bueno !

Voy a ver si intentamos hacer algo parecido en clase con los mbot ranger smile

Qué bueno ! Voy a ver si intentamos hacer algo parecido en clase con los mbot ranger :)

Si te interesa algún codigo lo puedo poner. Esta escrito para el IDE de Arduino.
Suerte con los alumnos 🤓

Si te interesa algún codigo lo puedo poner. Esta escrito para el IDE de Arduino. Suerte con los alumnos

Hola,

Me gusta mucho tu proyecto y estoy intentando hacer algo parecido con mi mbot...¿podrías por favor subir el código o describir el algoritmo aplicado para decidir la mejor dirección y cambiar de dirección?

Hola, Me gusta mucho tu proyecto y estoy intentando hacer algo parecido con mi mbot...¿podrías por favor subir el código o describir el algoritmo aplicado para decidir la mejor dirección y cambiar de dirección?

Hola, ya he incluido el código de uno de ellos, espero que te sirva, tal vez no directamente pero te dará ideas para adaptarlo y mejorarlo.
Si deseabas el código del de 3 sensores ultrasónicos también te lo puedo mandar.

Un saludo y divertidos montajes.

Hola, ya he incluido el código de uno de ellos, espero que te sirva, tal vez no directamente pero te dará ideas para adaptarlo y mejorarlo. Si deseabas el código del de 3 sensores ultrasónicos también te lo puedo mandar. Un saludo y divertidos montajes.
406
vistas
4
respuestas
3
seguidores
vista previa (en vivo)
introduzca al menos un 10 caracteres
Advertencia: Mencionaste a %MENTIONS%, pero ellos no pueden ver el mensaje y no serán notificados
Guardando...
Guardado
Todos los posteos de este tema serán borrados ?
Borrador pendiente ... Click para continuar editando
Descartar borrador