상세 컨텐츠

본문 제목

거미 로봇 만들기 #3

프로그래밍/Arduino & IoT

by ryujt 2015. 12. 19. 23:12

본문

배터리 출력이 약해서 서보 모터를 하나씩 동작시키면서 테스트하던 것을 배터리를 7.4V로 교체하여 테스트한 결과입니다.  이제 걷는 속도가 좀 더 나아졌습니다.  걷는 동작에 대한 알고리즘을 개선 할 일만 남았습니다.  현재는 수영하듯이 앞으로 나가도록 하였습니다 ^^;




소스는 아래와 같습니다.

#include <Servo.h> 

#define servo_count 8
#define delay_interval 100

Servo servos[servo_count];

int start_pos[servo_count] = {
   90,   90,   90,  90,
   40, 150, 155,  40
};

void setup() {
  Serial.begin(9600);
  
  for (int i=0; i<servo_count; i++) {
    servos[i].attach(i+2); 
    servos[i].write(start_pos[i]); 
  }
  
  delay(1000);
}

void loop() {
  go_forward();

//  srand(millis());
//  for (int i=0; i<servo_count; i++) {
//    servos[i].attach(i+2); 
//    servos[i].write(rand() % 180); 
//    
//    delay(100);
//    servos[i].detach(); 
//  }  
}

void set_angle(int no, float angle) {
    servos[no].write(angle); 
}

void push_legs() {
  int positions[4] = {50, 130, 50, 130};
  
  for (int j=1; j<=4; j++) {
    for (int i=0; i<4; i++) {
      if ((i % 2) == 0) {
        servos[i].write(positions[i] + 20 * j);
        Serial.println(positions[i] + 20 * j);
      } else {
        servos[i].write(positions[i] - 20 * j);
        Serial.println(positions[i] - 20 * j);
      }
    }
    
      delay(delay_interval);
  }
}

void right_front_forward() {
  set_angle(5, start_pos[5] - 40);
  set_angle(1, start_pos[1] + 40);
  
  delay(delay_interval);
  
  set_angle(5, start_pos[5]);
}

void right_back_forward() {
  set_angle(7, start_pos[7] + 40);
  set_angle(3, start_pos[3] + 40);
  
  delay(delay_interval);
  
  set_angle(7, start_pos[7]);
}

void left_front_forward() {
  set_angle(4, start_pos[4] + 40);
  set_angle(0, start_pos[0] - 40);
  
  delay(delay_interval);
  
  set_angle(4, start_pos[4]);
}

void left_back_forward() {
  set_angle(6, start_pos[6] - 40);
  set_angle(2, start_pos[2] - 40);
  
  delay(delay_interval);
  
  set_angle(6, start_pos[6]);
}

void go_forward() {
  right_front_forward();
  left_front_forward();
  
  delay(delay_interval);

  right_back_forward();
  left_back_forward();

  delay(delay_interval);

  push_legs();
}



'프로그래밍 > Arduino & IoT' 카테고리의 다른 글

저렴한 RC-Car 바디에 대한 시행착오  (0) 2015.12.29
RC Car #2  (0) 2015.12.21
거미 로봇 만들기 #2  (0) 2015.12.19
거미 로봇 만들기 #1  (0) 2015.12.18
쿼드콥터 제작 #5 - IRL540  (0) 2015.12.17

관련글 더보기