Pages: [1]   Go Down
Author Topic: Nuevo proyecto (Robot esquiva objetos) (Casi resuelto)  (Read 504 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos, en primer lugar me presento, soy un profesor de tecnología y me gustaría iniciarme en trabajar con arduino para explicar a mis alumnos algo que me encanta, pero por unas cosas y otras nunca me he puesto realmente a ello.

El proyecto que me planteo es muy simple, en principio, se trata de un coche traccionado por dos motores de CC básicos (menos de 1A cada uno) y dos sensores de distancia. Se trata del típico robot esquiva objetos que he visto en algunos videos en youtube.
El tema es que nunca me he puesto a hacer uno y ahora si lo quiero realizar. Para ello dispongo de dos motores con reductora, la placa Arduino UNO y el Shield de motores de 2A, aun no he comprado los sensores.

Creo que en cuanto a conexiones no tendré problemas, pero necesito vuestra ayuda con el código, tengo nociones básicas de programación en C, pero no como para crear el código desde 0. alguien me podria pasar un código para este proyecto?, imagino que los ajustes dependerán del sensor, eso podria hacerlo yo....o eso creo smiley-wink


Muchas gracias por vuestra ayuda!!

Un saludo.
« Last Edit: January 14, 2014, 02:13:37 pm by Salgarso » Logged

Offline Offline
Sr. Member
****
Karma: 1
Posts: 280
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



 smiley-money  necesito comer, para ello necesito dinero,  tu necesitas ayuda yo tengo el conocimiento.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Y bien??, me ayudarás??, tan solo es escribir el código que necesito, para un programador esto no debería ser más de 10 minutos de su tiempio :$

Gracias!!
Logged

Murcia
Offline Offline
Full Member
***
Karma: 2
Posts: 109
Aprendiz de novato
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bienvenido Salgarso,

Este es un foro donde puedes solicitar ayuda o consejo para solventar cualquier problema que tengas o realizar algún proyecto.

La ayuda es eso: ayuda. Para conseguirla debes esforzarte un poco: buscar proyectos similares al que tu quieres llevar a cabo (hay cientos en la web),  aprender a programar un pequeño sketch que mueva un motor, familiarizarte con las instrucciones a utilizar, equivocarte... entender porqué...

Si te dedicas a la docencia seguro que todo lo anterior lo tienes más que claro... lo que no puedes pretender es que otros te escriban este u otro código sin más ni más porque no aprenderás nada y difícilmente podrás enseñar nada a nadie...

Dale un par de vueltas, presenta tu código al foro explicando que hace o no y que debería hacer. Verás como así obtienes la ayuda que buscas.

Un saludo.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muchas gracias Jukar, intentaré conseguir un código para el proyecto que necesito y luego os lo propondré a ver si me funciona!!

Un saludo!!
Logged

Alicante (España)
Offline Offline
Full Member
***
Karma: 13
Posts: 226
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Y en el hilo, tienes que poner un título descriptivo de lo que trata, no vale "nuevo proyecto", "pido ayuda" o "estoy atascado"

Jopapa
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok Jopepa, título cambiado smiley-wink gracias por vuestro interés!! cuando tenga el código os lo paso por aquí a ver que me comentais....

GRACIAS de nuevo!!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola de nuevo a todos, he hecho algunas investigaciones y he conseguido un código que me funciona bien, excepto en una cosa y no se como solucionarlo.

Básicamente el fallo es que cuando los dos sensores detectan que la distancia es menor de 10cm, el coche debería ir hacia atras durante dos segundos y luego continuar hacia adelante, y no hace eso, se queda como en un bucle 2 segundos en marche, 2 segundos parado, 2 en marche, 2 parado....y así.....

ayudadme por favooor, estoy desesperado y no se que falla!!

Os pongo el código (disculpad las posibles "barbaridades" en la escritura, no lo se hacer mejor jejeje)

const int pingder = 7;
const int pingizq = 6;
#include <Servo.h>
Servo miservoder;
Servo miservoizq;

void setup()
{
  miservoder.attach(9);  // asigno el pin 9 al servo derecho//
  miservoder.write(90);  // coloca el servo derecho en su posición central//
  miservoizq.attach(10); // asigno el pin 10 al servo izquierdo//
  miservoizq.write(90);  // coloca el servo izquierdo en su posición central//
  Serial.begin(9600);
}

void adelante()
{
miservoder.write(50);
miservoizq.write(50);
delay (2000);
}

void atras()
{
miservoder.write(140);
miservoizq.write(140);
delay (1500);
}

void derecha()
{
miservoder.write(70);
miservoizq.write(120);
delay (2000);
}

void izquierda()
{
miservoder.write(120);
miservoizq.write(70);
delay (2000);
}


void loop()
{
 
  long durationder, durationizq, cmder, cmizq; //declaro las variables//

  pinMode(pingder, OUTPUT); //emito el pulso del sensor derecho//
  digitalWrite(pingder, LOW);
  delayMicroseconds(2);
  digitalWrite(pingder, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingder, LOW);
 
  pinMode(pingder, INPUT); //leo el pulso derecho//
  durationder = pulseIn(pingder, HIGH);

  pinMode(pingizq, OUTPUT);//emito el pulso izquierdo//
  digitalWrite(pingizq, LOW);
  delayMicroseconds(2);
  digitalWrite(pingizq, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingizq, LOW);

  pinMode(pingizq, INPUT); //leo el pulso izquierdo//
  durationizq = pulseIn(pingizq, HIGH);

  cmder = microsecondsToCentimeters(durationder);//distancia sensor derecho//
  cmizq = microsecondsToCentimeters(durationizq);//distancia sensor izquierdo//
 
  if(cmizq<10&&cmder<10)//estructura que controla los movimientos de los servos//
 {
 atras();
 }
 else if(cmizq<10)
 {
 derecha();
 }
 else if (cmder<10)
 {
 izquierda();
 }
 else
 {
 adelante();
 }
 
//compruebo en el monitor el funcionamiento de los sensores//
  Serial.print(cmder);
  Serial.print("cm");
  Serial.print(cmizq);
  Serial.print("cm");
  Serial.println();
 
  delay(100);
}


long microsecondsToCentimeters(long microseconds)//Paso el tiempo en microsegundos a distancia en cm//
{
  return microseconds / 29 / 2;
}

Logged

Pages: [1]   Go Up
Jump to: