티스토리 뷰
초음파센서와 버튼스위치로 동작하는 서보모터 실습을 해보겠습니다. 버튼스위치, 초음파센서는 구성이 단순하고 사용법이 쉬워 흔히 쓰이는 입력장치입니다. 서보모터 역시 다양한 곳에 적용되는 출력장치 중 하나입니다. 주변에 동작되는 기계들을 보면 모터로 구성된 것들이 많습니다. 돌아가는 레이더머리, 자동으로 열리는 문 등은 회전하는 모터에 바로 연결해서 사용하는 경우입니다. 컨베이어벨트나 엘레베이터처럼 모터의 회전을 직선운동으로 바꿔서 사용하기도 합니다.
그럼 이제 자동으로 동작하는 사물함을 설계한다고 상상해 봅시다. 버튼을 누르면 문이 열리고, 사물함에 물건을 넣으면 자동으로 문이 닫힙니다. 이 동작들을 단계별 아두이노 로직으로 짜보겠습니다.
1. 버튼을 누르면 문에 연결된 서보모터가 돌아간다.(문이 열린다.)
2. 사물함 내부 초음파센서가 물건을 감지하면 잠시 후 문이 닫힌다. (물건을 넣고 손을 뺄 수있게 5초 뒤에 닫히는 걸로 하겠습니다.)
<그림 1> 완성된 회로
<그림 2> 회로도
———완성된 코드———
#include<Servo.h> #define TRIG 2 // 초음파센서 TRIG 2번핀 할당 #define ECHO 3 // 초음파센서 ECHO 3번핀 할당 int button = 5; //버튼센서 입력 5번핀 할당 Servo servo; boolean isNear = false; void setup(){ pinMode(TRIG,OUTPUT); // 아두이노 송신 pinMode(ECHO,INPUT); // 아두이노 수신 pinMode(button,INPUT); // 아두이노 수신 servo.attach(9); // 서보모터 제어 9번핀 할당 servo.write(180); // 서보모터 초기각도 180도 셋팅 } void loop() { digitalWrite(TRIG,LOW); delayMicroseconds(2); digitalWrite(TRIG,HIGH); delayMicroseconds(5); digitalWrite(TRIG,LOW); long distance = pulseIn(ECHO,HIGH)/58; // 초음파 간격 //만약 버튼이 눌러졌다면 if (digitalRead(button)) { servo.write(0); // 서보모터 0도로 회전 } else if(distance < 10){ // 만약 10cm보다 가까우운 곳에 물체가 있으면 delay(5000); // 5초 뒤에 servo.write(180); // 서보모터 180도로 회전 } }
'아두이노' 카테고리의 다른 글
[아두이노] 스마트폰과 블루투스로 연결하기 (3) | 2018.12.29 |
---|---|
[아두이노] Fritzing으로 아두이노 회로도 그리기 (1) | 2018.12.26 |
[아두이노] 온/습도 LCD에 표시하기 (1) | 2018.12.25 |
[아두이노] 인/아웃핀 (1) | 2018.12.18 |
[아두이노] 아두이노란? (1) | 2018.12.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- solar
- 릴레이
- DC Motor
- Step Motor
- Solar Panel
- Renewable
- LED
- 스크럼
- dht
- 습도
- 초음파센서
- 태양광
- 서보모터
- relay
- dc 모터
- 4 원칙
- Scrum
- Fading LED
- 코딩
- Potentiometer
- 온도
- 애자일
- Stepper Motor
- 시리얼 모니터
- agile
- 아두이노
- Arduino
- DHT22
- Solar Sharing
- 태양광 공유
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함