silly meccano classic bot

i had to make this classic robot, all the people makes it as a fisrt one.... jejejejeje this is made meccano style...... will post a video tomorrow...

Nice job. Look forward to the video. I am working on something similar with a motor shield from Adafruit. Currently I am working on the behavior aspect.

http://www.youtube.com/watch?v=66lT59VtZJo

Nice job aventgps

Would you mind posting your source code
I am especially intrerested by the IR sensor servo-mounted control

I do remember your CNC machine :wink:

these simple robots never stop amazing me :-). Nice job

/// diego colonnello botico//
///14 de octubre 2010 ///

#include <Servo.h>

Servo servocentro;
Servo servoderecho;
Servo servoizquierdo;
int sensorPin = 2; // pin de entrada sensor sharp
int distancia = 300;

void setup()
{
Serial.begin(9600);
servocentro.attach(8); //conecta el servo del sensor al pin 8
servoderecho.attach(10); // conecta el servo derecho al pin 10
servoizquierdo.attach(9); // conecta el servo izquierdo al pin 9

}

void loop()
{

Serial.println(analogRead(2));

{

if (analogRead(2) <= distancia)
{
adelante();
}
if (analogRead(2) > distancia)
{

girar_iz(); // muevete girando
}
}

}

//funciones de caminar//

// camina hacia adelante//

void adelante()

{
servoderecho.write(0);
servoizquierdo.write(180);
}

//camina retrocediendo

void atras()

{
servoderecho.write(180);
servoizquierdo.write(0);

}

//gira el cuerpo

void girar_iz()

{
servoderecho.write(180);
servoizquierdo.write(180);
delay(500);
}

void girar_der()

{
servoderecho.write(0);
servoizquierdo.write(0);
}

i am gonna make some other testing with this bot, like changing the IR Sharp sensor by a PING))) to introduce the changes in the programing... another thing is that i want to practice programing with other ways of using variables and stuff..... there is more than a hundred ways to do the same thing...

in a few weeks i will start improving my CNC machine... :D

new program:

//programa de mi robot BOTICO, para aprender a programar
//sensor sharp en un servo para que se mueva y determine
//la mejor opcion de movimiento
//tiene un lcd 16x2 para hacer feedback al usuario
//diego colonnello ultima version 25 octubre 2010
//aurduino severino s3v3 single side board

#include <Servo.h>

Servo servocentro;
Servo servoderecho;
Servo servoizquierdo;
int sensorPin = 2; // pin de entrada sensor sharp
int distancia = 300;
int lectura1 = 0;
int lectura2 = 0;
void setup()
{
Serial.begin(9600);
servocentro.attach(8); //conecta el servo del sensor al pin 8
servoderecho.attach(10); // conecta el servo derecho al pin 10
servoizquierdo.attach(9); // conecta el servo izquierdo al pin 9

}

void loop()

{ clearLCD();
selectLineOne();
Serial.println(“Caminandito”);
adelante();
{
if (analogRead(2) >= distancia)
{ clearLCD();
selectLineOne();
Serial.println(“toy decidiendo”);
parado();
delay(800);
servocentro.write(0);

lectura1 = analogRead(2);
delay(700);
servocentro.write(180);

lectura2=analogRead(2);
delay(700);
servocentro.write(90);
if (lectura1 > lectura2)
{selectLineTwo();
Serial.println(“izquierda”);
delay(800);
girar_iz();

}
if (lectura1 < lectura2)
{selectLineTwo();
Serial.println(“derecha”);
delay(800);
girar_der();

}
}

}
}

//funciones de caminar//

// camina hacia adelante//

void adelante()

{
servoderecho.write(0);
servoizquierdo.write(180);
}

//camina retrocediendo

void atras()

{
servoderecho.write(180);
servoizquierdo.write(0);

}

//gira el cuerpo

void girar_iz()

{
servoderecho.write(180);
servoizquierdo.write(180);
delay(500);
}

void girar_der()

{
servoderecho.write(0);
servoizquierdo.write(0);
delay(500);
}

void parado()
{
servoderecho.write(90);
servoizquierdo.write(90);
}

//funciones para usar en un lcd 16x2
//modulo serlcd de sparkfun

void selectLineOne(){ //puts the cursor at line 0 char 0.
Serial.print(0xFE, BYTE); //command flag
Serial.print(128, BYTE); //position
}
void selectLineTwo(){ //puts the cursor at line 0 char 0.
Serial.print(0xFE, BYTE); //command flag
Serial.print(192, BYTE); //position
}
void goTo(int position) { //position = line 1: 0-15, line 2: 16-31, 31+ defaults back to 0
if (position<16){ Serial.print(0xFE, BYTE); //command flag
Serial.print((position+128), BYTE); //position
}else if (position<32){Serial.print(0xFE, BYTE); //command flag
Serial.print((position+48+128), BYTE); //position
} else { goTo(0); }
}

void clearLCD(){
Serial.print(0xFE, BYTE); //command flag
Serial.print(0x01, BYTE); //clear command.
}
void backlightOn(){ //turns on the backlight
Serial.print(0x7C, BYTE); //command flag for backlight stuff
Serial.print(157, BYTE); //light level.
}
void backlightOff(){ //turns off the backlight
Serial.print(0x7C, BYTE); //command flag for backlight stuff
Serial.print(128, BYTE); //light level for off.
}
void serCommand(){ //a general function to call the command flag for issuing all other commands
Serial.print(0xFE, BYTE);
}

i am now adding a píezo buzzer... ;D