Primer BOT con arduino

Hace algunos años adquirí un BOE-Bot para hacer tonterías de robótica y distraerme… Al migrar totalmente a GNU/Linux me quedé de piedra al saber que los de Parallax no desarrollaban (ni pensaban desarrollar) su software para mi adorado S.O., por lo que el robotito se quedó acumulando polvo.

Hoy aprovechando un ratito, he trasteado un poco y he sustituido la placa BOE por un arduino… He tecleado un programita realizando un bucle de  órdenes básicas: avanza(), retrocede(), para(), izquierda(), derecha() y vistazo() (ésta última mueve, a un lado y otro, un tercer servo con dos ojillos  [OPCIONAL]).  La verdad que ha quedado simpático y lo mejor… FUNCIONA!!! Miguel, mi hijo, se ha quedado prendado del bichillo 🙂

Lo siguiente que se me ocurre es manejarlo de forma inalámbrica… para ello usaré dos módulos xbee/zigbee y un nunchuck (Wii)… Pero esto será en otro ratito libre que tenga 😉

See you…

2 comments

  1. frank sosa dice:

    Aquí dejo el código… para quien le interese.

    // bichillo.pde: Primer BOT con Arduino (plataforma BOE-bot)
    // Conectaremos el servo derecho a Digital I/O 9 y el servo izquierdo al Digital I/O 10
    // [OPCIONAL] Conectaremos el servo de «los ojillos» al Digital I/O 11

    // [NOTA] dado que los servos estan opuestos deben girar de manera
    // opuesta para que el movimiento aparente sea en el mismo sentido..

    #include <Servo.h> // Libreria para el manejo de servos
    Servo dcha,izqda,ojillos; // Creamos los objetos «Servo»

    // Configuramos el sistema descrito…
    void setup()
    {
    dcha.attach(9); // Servo derecho al pin 9
    izqda.attach(10); // Servo izquierdo al pin 10
    ojillos.attach(11); // Servo de los ojillos al pin 11
    ojillos.write(90); // «Mirada al frente»
    delay(15);
    }

    // El bluce infinito…
    void loop()
    {
    avanza(); // Avanzamos…
    delay(1000); // … durante un segundo.
    vistazo(); // Damos un vistazo.
    derecha(); // Giramos a la derecha…
    delay(1000); // … durante un segundo.
    vistazo();
    avanza();
    delay(1000);
    vistazo();
    izquierda(); // Giramos a la izquierda…
    delay(1000); // durante un segundo.
    vistazo();
    delay(3000); // Paramos 3 segundos… antes de volver a empezar.
    }

    // Las funciones de movimiento…
    void para()
    {
    dcha.writeMicroseconds(1500); // Ancho de pulso necesario para retener el giro
    izqda.writeMicroseconds(1500); // y quedarse parado.
    }
    void avanza()
    {
    dcha.writeMicroseconds(2000); // Para avarzar, un servo gira en un sentido
    izqda.writeMicroseconds(1000); // y el otro en el opuesto
    }
    void retocede()
    {
    dcha.writeMicroseconds(1000); // Para retroceder, un servo gira en un sentido
    izqda.writeMicroseconds(2000); // y el otro en el opuesto
    }
    void izquierda()
    {
    dcha.writeMicroseconds(1000); // Para girar más rápido usamos los dos servos
    izqda.writeMicroseconds(1000);
    }
    void derecha()
    {
    dcha.writeMicroseconds(2000); // Volvemos a usar los dos servos para girar más raṕido
    izqda.writeMicroseconds(2000);
    }
    void vistazo()
    {
    para(); // Paramos…
    ojillos.write(45); // Miramos a un lado…
    delay(1000);
    ojillos.write(135); // Miramos al otro…
    delay(1000);
    ojillos.write(90); // Miramos al frente.
    delay(1000);
    }

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.