2015년 7월 21일 화요일

레고 진화

드디어 기다리던 서보 모터가 왔습니다.
사실 서보모터보다 더 기다리던 거미 로봇도 왔습니다. ^^*; 거미 로봇을 기다리다 심심해서 만든 레고 로봇을 완성하는게 우선 급해서 서보 모터가 반갑게 느껴지네요.

제가 구입한 서보모터는 연속회전 서보모터 입니다.

[연속 회전 서보 모터 - FS90R]
목이 빠져라 기다렸던 거미~
[물건너 온 거미로봇]
그리고 거미로봇이 늦게 도착 한것에 미안하다고 업체에서 라즈베리 파이 공식 케이스를 서비스로 받았습니다. 대박~
[서비스로 받은 라즈베리파이 공식 케이스]

지난번 한쪽 뿐인 서보모터에 짝을 지어줬습니다.

[서보모터 2개로 크레인 바퀴 완성]

서보 모터를 기다리면서 건전지 고정부의 레고도 미리 만들어 둬서 이번에는 안정적인 모양새를 갖출 수 있었습니다.

[건전지와 아두이노 얹어주고 마무리]

지난번 스케치 코드로 앞뒤로 잘 동작 합니다.
감동의 물결 이네요. ㅠㅠ

그런데 욕심이 좀 생겼습니다.
거리 센서를 달아서 장애물 피하기 까지 해 보고 싶어서 눈을 달아 줬습니다.


그리고 급조한 코드를 작성해서 넣어 줬습니다.
기대하는 동작은 직진하다 장애물을 만나면 정지 -> 후진 -> 턴 -> 다시 직진 입니다.

// Sweep
// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.

#include <Servo.h>

#define pin A0

Servo myservo1;
Servo myservo2;

int val1;
int val2;

void setup()
{
myservo1.attach(2);
myservo2.attach(9);
pinMode (pin, INPUT);

}

uint16_t get_gp2d12 (uint16_t value) {
if (value < 10) value = 10;
return ((67870.0 / (value - 3.0)) - 40.0);
}

void go () {
val1 = myservo1.read();
val2 = myservo2.read();
val1=225;
val2=45;

myservo1.write(val1);
myservo2.write(val2);

Serial.println ("go");
}

void back () {
val1 = myservo1.read();
val2 = myservo2.read();
val1=45;
val2=225;

myservo1.write(val1);
myservo2.write(val2);

Serial.println ("go");
}

void stop () {
myservo1.write(90);
myservo2.write(92);
Serial.println ("stop");
}

void turn () {
val1=225;
val2=225;
myservo1.write(val1);
myservo2.write(val2);

Serial.println ("turn");
}

void loop()
{
uint16_t value = analogRead (pin);
uint16_t range = get_gp2d12 (value);
Serial.print (range);
Serial.println (" mm");
delay (500);

if (range < 150){
stop ();
delay (2000);
back ();
delay (2000);
stop ();
delay (2000);
turn ();
delay (700);
stop ();
delay (100);
} else {
go ();
}

delay (15);

}
 제대로 작성했는지는 좀 시간을 두고 봐야 겠습니다.
일단 동작은 하니까 기쁜 마음으로 살짝 찍어 주고나서 하죠 ^^



그런데... 좀 진정하고 살펴보니 이상한 부분이 있습니다.
서보모터의 정지는 90도로 설정하는 것인데 9핀 모터는 정상적으로 90도에 멈추는데 2핀 모터는 92도에 멈추네요. 흠... 이유를 잘 모르겠습니다. 전원 문제일까요?
그리고 생각보다 거리 센서에 오류가 많네요.

어쩄든.. 첫 레고 로봇을 완성 했기에 가벼운 마음으로 거미 로봇을 완성하러 가겠습니다. ㅎㅎ

댓글 없음: