코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
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초 대기 후 다시 측정
}
자바실험실