Fork me on GitHub

Mi primer robot con Arduino

July 23, 2013

Continuando el post anterior acá van mis avances con el robotito. Finalmente pude terminar la primera versión que simplemente hace lo siguiente:

  • Toma la distancia al objeto delante
  • Si la distancia es > 40 cm se mueve hacia adelante
  • Sino
    • Al azar puede retroceder o no una distancia corta también al azar
    • Gira hacia algún lado al azar
Arduino simple robot

Acá se lo puede ver funcionando.

Me divertí bastante con el sensor de proximidad porque devuelve el tiempo en microsegundos que tarda en regresar el sonido emitido, entonces para averiguar la distancia a la que está el objeto que produjo el rebote tenés que tener en cuenta la velocidad del sonido. Algo así:

La velocidad del sonido (en el aire y a 20°C) es aprox 343,5 m/s. Si convertimos esto en cm/ųs tenemos:

c = 343.5 * 100 / 1000000 = 0.03435 cm/ųs

Ahora calcular la distancia es fácil. Supongamos que el sensor devuelve 750ų:

d = (750ųs / 2) * 0.03435 cm/ųs = 12.8 cm

La función que lee el sensor quedaría así

long get_distance()
{
    long duration, distance;
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(2000);
    digitalWrite(TRIG_PIN, LOW);
    duration = pulseIn(ECHO_PIN, HIGH);
    distance = (duration/2) * 0.03435;
    return distance;
}

El código completo está acá.

Arduino simple robot

Mientras hacía el robotito descubrí ino, una herramienta hecha en Python para compilar y subir tu código a cualquier Arduino. Estaba cansado del IDE de Arduino, para mí el editor que trae es simplemente inusable. Ya lo había dejado de usar y usaba el IDE para compilar, subir el código y mirar la consola serial. Con ino puedo usar mi editor favorito (Vim) y subir mi código desde la consola misma y además tiene monitor serial :)

Arduino simple robot

Arduino Trabajos Video