프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

아두이노 아이언맨

2016-02-01 00:34:54

 

프로젝트 개요

 

일정 거리 안에 들어오면 아이언맨의 헬멧이 올라가는 장난감입니다. 초음파 거리센서와 서보모터로 이루어진 간단한 작품입니다.

 

사용보드: 아두이노 호환

거리 센서: HC-SR04 (거리 센서로서 가장 대중화된 부품입니다.)

서보모터: SG90 미니서보

 

최종 결과

 



 

만드는 방법

 

1. 아두이노 페이퍼 토이 만들기

인터넷에서 '아이언맨 페이퍼토이'를 검색해보면 상당히 많은 자료가 있음을 알게 됩니다. 그 중에서 적당한 것을 종이에 출력하여 페이퍼 토이를 만듭니다.

페이퍼 토이 다운로드: http://m.blog.naver.com/jean48567/220319381390

페이퍼 토이를 만들 때 아이언맨의 헬멧은 따로 만들어서 덜렁거리도록 만든 다음 약간 빳빳한 플라스틱을 덧대서 구멍을 뚫어 놓아야 합니다. 자세한 것은 다음 사진으로 설명합니다.

 

2. 페이퍼 토이에 서보모터 장착

서보모터가 살짝 회전하면 아이언맨의 헬멧이 올라갈 수 있도록 각자 판단하에 서보모터와 헬멧을 실로 연결하시기 바랍니다. 서보모터의 회전각도는 실제 디버깅 과정에서 각자 조절해 주어야 합니다.

자세한 것은 사진을 참고 바랍니다.

 

 

연결 방법

 

아두이노의 2, 3, 13번 포트를 사용합니다. 연결 방법은 다음과 같습니다.

아두이노의 2번 포트 ~ 거리센서의 Echo 포트

아두이노의 3번 포트 ~ 거리센서의 Trig 포트

아두이노의 13번 포트 ~ 서보모터의 노란색 케이블

아두이노 보드 소스 (인용시 출처를 명시해 주세요.)

 

아두이노의 2, 3, 13번 포트 외 다른 포트를 사용하는 경우 소스의 수정이 필요합니다.)

 

#include <Servo.h>
Servo myservo;

long duration;
long distance1 = 100;
long distance2 = 100;

void setup()
{
  Serial.begin(9600);
  pinMode(3, OUTPUT); // 센서 Trig 핀
  pinMode(2, INPUT);  // 센서 Echo 핀
  pinMode(13, OUTPUT);

  myservo.attach(4);
  myservo.write(150);
}

void loop()
{
  digitalWrite(3, HIGH);  // 센서에 Trig 신호 입력
  delayMicroseconds(10);  // 10us 정도 유지
  digitalWrite(3, LOW);   // Trig 신호 off

  duration = pulseIn(2, HIGH);  // Echo pin: HIGH->Low 간격을 측정
  distance1 = duration / 29 / 2; // 거리(cm)로 변환

  // Serial.print(distance1);
  // Serial.println(" cm");

  if (distance1 < 30)
  {
    digitalWrite(13, HIGH);
    if (abs(distance1 - distance2) < 30) myservo.write(150);
  }
  else
  {
    digitalWrite(13, LOW);
    if (abs(distance1 - distance2) < 30) myservo.write(30);
  }

  distance2 = distance1;
  delay(100);      // 0.1초 대기 후 다시 측정
}

 

 

 

자바실험실