IR SENSOR ROBOT

R SENSOR ROBOT -  Evitando objetos e paredes
  • Tempo de construção : duas semanas
  • Peso: 500 g
  • Movimento: 3 servos
  • Tipo: autonomo
  • CPU: Arduino Duemilanove
  • Sisteama: Arduino
  • Força: 4 Pilhas AA e1 9 V
  • Linguagem: Arduino
  • Sensores: Sharp GP2Y0A02YK0F
Este robot foi é minha primeira experiência com Arduino (veja os links).
Ele anda baseado em dois servos com rotação 360 graus e usa mais um servo de 180 graus para movimentar a "cabeça" aonde está instalado o sensor.
O sensor envia ir e  os obstáculos refletem então ele passa a informação analógica analógica que é processada pela placa para decidir a ação a tomar.
As leituras são mais ou menos as seguintes:

600 = 20 cm
500 = 35 cm
400 = 45 cm
O sensor tem um alcance de 1.5 m mas só estou usando com 45 cm... minha casa é pequena!

Veja o vídeo:


Aqui está o código que usei :

/*
Cláudio Miklos
*/

#include
//declara servos
Servo servo_direita;
Servo servo_esquerda;
Servo servo_cabeca;
#define IR_pin 0
//define impulsos
int frente_d = 0;
int re_d = 130;
int parado_d = 90;
int frente_e = 130;
int re_e = 0;
int parado_e = 95
int IR_val = 0;
//define portas e movimentos


void setup()


{


servo_direita.attach(5);


servo_esquerda.attach(3);


servo_cabeca.attach(6);


}


void frente()


{


servo_direita.write(frente_d);


servo_esquerda.write(frente_e);


}


void esquerda()


{


servo_direita.write(frente_d);


servo_esquerda.write(re_e);


}


void direita()


{


servo_direita.write(re_d);


servo_esquerda.write(frente_e);


}


void re()


{


servo_direita.write(re_d);


servo_esquerda.write(re_e);


}


void parado()


{


servo_direita.write(parado_d);


servo_esquerda.write(parado_e);


}


void loop() {


IR_val = analogRead(IR_pin);
while(IR_val < 400){


frente();


}
if (IR_val > 400) // obstaculo detectado


{


parado(); // para os dois motores


servo_cabeca.write(0); // vira a cabeca para esquerda


}
if (IR_val < 400) // tudo claro a esquerda


{


esquerda(); // vira a esquerda


delay(1050); // tempo para virar a esquerda


servo_cabeca.write(90); // centraliza cabeca
}


else if (IR_val > 400)


{


servo_cabeca.write(180); // vira cabeca para direita


direita(); //vira a direita


delay(1050); // tempo para virar a direita


servo_cabeca.write(90); // centraliza cabeca
}


}


/*
FINIS
*/

Nenhum comentário:

Postar um comentário

Faça seu comentário.

Internet of Things

LUX com arduino GPRS shield e sensor LDR.

/*
Graph: Feed 38642, Datastream lux
*/

Laboratórios, Lojas e Produtos

Blogs, Comunidades e Revistas