Robótica particular
Tienda de robots

Robótica profesional
NGRobotics

Consultoría IT
Artifact Consulting S.L.

Inicio

Servicio

Espacial

Domótica

Industrial

Competición

Sanitaria

Militar

Divulgativo

Biorobótica

Equipo

Personal

Investigación

Empresa

Voladores

Acuáticos

Social

Terrorismo

Ferias

Sci/Fi

DIY / Kits

Expertos

Artículos > Recursos del curso de la Nit dels Museus en Cosmocaixa BCN

Gracias a todos los asistentes al taller de robótica de la nit dels museus en el Cosmocaixa Barcelona, sobre todo por vuestro interés en promover la ciencia entre los más pequeños usando componentes reutilizables, no propietarios que abren un mundo de posibilidades a los más pequeños.

Nota: Si ya os funciona y quereis enseñarlo mandarnos un vídeo pequeño de medio mega o un mega por whatsapp al 650431920 y lo subiremos aquí. Especialmente si os liais la manta a la cabeza y decidis cambiarle algo curioso, ponerle un rodamiento delante, ponerle motores más rapidos, cortar la plancha,... lo que querais.

Aquí tenéis el código fuente que ejecuta el robot (el programa que lleva cargado), contiene un pequeño autómata que tiene en cuenta lo que venia en la 'iteración' anterior del programa, de forma que si se mantiene encima de la linea sigue recto, pero si se sale entonces vuelve al centro.

//-------------------COPIAR DESDE AQUI A LA APLICACION DE ARDUINO ---
//Conectores del arduino que controlan el motor
const int motor1 = 9;
const int motor2= 10;
//Valor numerico que indica si el sensor ve linea negra (aprox 200) o zona blanca (aprox 10) se puede ver el valor exacto pulsando Herramientas -> Monitor serial
int sensorValue=0;
//Variable que controla el automata de estados (que posicion tienen los sensores del robot)
char ahora='c';

void setup() {
//Inicializacion de pines de control de motores y puerto serie para poder depurar facilmente que ven los sensores
pinMode(motor1, OUTPUT);
pinMode(motor2, OUTPUT);
Serial.begin(9600);
}

void loop() {
//Leemos un sensor
sensorValue = analogRead(A4);
//Lo imprimimos en el puerto serie para poder depurar con el cable USB (uno de impresora vale)
Serial.print(sensorValue);
Serial.print('-');
//Leemos el otro sensor
sensorValue = analogRead(A5);
//Lo imprimimos tambien para ver los dos valores juntos en una fila (println significa print line, es decir, imprime texto y avance de linea)
Serial.println(sensorValue);
//Aqui viene la parte geek, el algoritmo (cutrecillo) que permite mantenerse encima de la linea sin salirse ¿puedes mejorarlo? :)
if (analogRead(A4)>100 && analogRead(A5)>100)
{
ahora='c';
}
else if(analogRead(A4)<100 && ahora=='c')
{
ahora='i';
}
else if( analogRead(A5)<100 && ahora=='c')
{
ahora='d';
}
if (ahora=='i')
{
analogWrite(motor1, 0);
analogWrite(motor2, 140);
}
else if (ahora=='d') {
analogWrite(motor1, 140);
analogWrite(motor2, 0);
}
else
{
analogWrite(motor1, 140);
analogWrite(motor2, 140);
}
}
//---- FIN DEL PROGRAMA

Aquí tenéis el fichero INO directamente (es lo mismo que tenéis arriba, podéis simplemente copiar y pegar en el bloc de notas de Arduino.

Algunos chavales que participaron en el robot ya nos han mandado vídeos del bicho funcionando, si nos dan permiso lo colgaremos en nuestro canal de youtube. Cualquier pregunta la podeis hacer en informacion@roboticspot.com y la responderemos por email y aqui mismo para que la tengáis todos.

RoboticSpot.com es una marca registrada. Todos los derechos reservados. España 2011. Politica de privacidad