Hola a Todos.
El pasado día 24 Papá Noel ( una gran persona, todo hay que decirlo ), decidió que me había portado bastante bien durante el año y me sorprendió con un Lego MindStorms.
Tras todas las obligaciones familiares, laborales, mi cumpleaños ( SI,otro año más viejo ), etc, etc, ayer por fín comencé ( como diría mi amigo El Bruno ) con mi conquista personal del mundo.
Hace algunos años me inicié en el tema de la robotica totalmente emocionado despues de ver al señor Data en la saga StarTrek, o a nuestro maravilloso T-1000 en Terminator, y como no … nuestro memorable amigo Roby ( para aquellos que no lo conozcais, Roby es uno de los robots más antiguos de la historia del cine ) y monté un pequeño robotillo que solo éra capaz de seguir una linea de cinta aislante negra sobre un suelo blanco. Esa fue una maravillosa experiencia. ( no recuerdo sobre que lo programé … pero si recuerdo las horas y horas dedicadas para que el pequeño bicho se pusiera en marcha y me hiciera caso!! ).
Aunque ya conocia el tema de los MindStorms gracias a Miguel Jimenez en la CodeCamp del Escorial ( creo q no olvidaré esas 2 horas antes de la presentación del evento de lucha entre los legos en la que estabamos montando los bichos ) me volvió a impresionar la sencillez con la que puedes montar tu propio humanoide y programarlo sin problemas.
Claro que eso te empieza a abrir la mente y nuevas ideas te empiezan a aparecer, pero claro, lo primero es lo primero. Osea que aquí os dejo la implementación del ‘Sigue Lineas’, para que la echeis un vistazo a ver que os parece.
namespace sigueLinea
{
public partial class frmSigueLaLinea : Form
{
// Si el color detectado es igual o superior a este valor, es blanco
int colorBlanco = 50;
// Si el color detectado es igual o inferior a este valor, es negro
int colorNegro = 40;
public frmSigueLaLinea()
{
InitializeComponent();
}
#region Eventos
// Indica si está activo
bool estaActivo = false;
// Indica si se ha encontrado la linea
bool negroEncontrado = false;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
nxtBrick.Connect();
}
protected override void OnClosing(CancelEventArgs e)
{
nxtBrick.Disconnect();
base.OnClosing(e);
}
// Comprobamos la información del sensor de visión y decidimos que hacer
private void nxtLightSensor_ValueChanged(NxtSensor sensor)
{
// No se hace nada hasta que no esté activo
if (estaActivo == false)
{ return; }
// Inicialmente, el bicho se pone en marcha hasta encontrar la linea. // En el momento que la encuentra el sensor pondrá a seguirla
if (nxtLightSensor.Value <= colorNegro)
{ negroEncontrado = true; }
// Como lo hemos encontrado … le seguimos
if (negroEncontrado)
{ SigueLaLinea(nxtLightSensor.Value); }
else
{ SigueRecto(0); }
}
// Pulsamos en Ir
private void btnGo_Click(object sender, EventArgs e)
{
estaActivo = true;
}
// Pulsamos en Parar
private void btnStop_Click(object sender, EventArgs e)
{
estaActivo = false;
PararMotor();
negroEncontrado = false;
}
// Pulsamos en Cerrar
private void btnQuit_Click(object sender, EventArgs e)
{
this.Dispose();
}
#endregion
#region Algoritmo para seguir la linea
public void SigueLaLinea(int LightValue)
{
// Si es blanco … lgiramos a la derecha
if (LightValue > colorBlanco) { GiraDerecha(); }
// Si es negro … giramos a la izquierda ( un poquito )
else if (LightValue < colorNegro) { GiraIzquierda(); }
// Si no es ninguno de los dos .. seguimos recto
else { SigueRecto(0); }
}
#endregion
#region Control del Robot
// La velocidad de movimiento
int Velocidad = 10;
// A que velocidad se gira
int gradosGiro = 1;
public void SigueRecto(int grados)
{
nxtMotorA.Turn(Velocidad, grados);
nxtMotorC.Turn(Velocidad, grados);
}
public void VuelveAtras(int grados)
{
nxtMotorA.Turn(-Velocidad, grados);
nxtMotorC.Turn(-Velocidad, grados);
}
public void GiraIzquierda()
{
nxtMotorA.Turn(Velocidad, gradosGiro);
}
public void GiraDerecha()
{
nxtMotorC.Turn(Velocidad, gradosGiro);
}
public void PararMotor()
{
nxtMotorA.Coast();
nxtMotorC.Coast();
}
#endregion
}
}
Pues eso … un saludo a todos!
Hola,
Como podría conseguir uno aquí en España?
Un Saludo
Hola.
Yo lo compré hace un mes en http://www.electricbricks.com/
No he tenido ningún problema ni con el pedido ni con el envío ni nada, todo perfecto!
Hey amigo …
q alegria !!!
a disfrutarlo !!!
Saludos
Hola David!
Yo también tengo uno (si estuviste en la Code, lo gané en el combate de sumo xD).
Pues nada, si tienes alguna duda espero poder ayudarte… y cuando quieras montamos una orden de caballeros Lego-Jedis… 😉
Un saludo!