아두이노에 초음파센서와 서보모터를 함께 연결해서 작동시켜 봅시다.
01. 아두이노 회로 구성하기
그림과 같이 회로를 연결해 봅시다.
서보모터 연결
갈색: GND (GND)
빨강: 5V (VCC) (브레드보드로연결)
주황: 10번핀 (Signal)
초음파센서 연결
VCC: 5V(브레드보드로연결)
Trig: 11번
Echo:12번
Gnd:Gnd
02. 아두이노 스케치하기
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<Servo.h>
const int servo_pin=10;
const int trig_pin=11;
const int echo_pin=12;
Servo myservo;
void setup() {
pinMode(trig_pin, OUTPUT);
pinMode(echo_pin, INPUT);
Serial.begin(9600);
myservo.attach(servo_pin);
myservo.write(0);
}
void loop() {
digitalWrite(trig_pin,LOW);
delayMicroseconds(2);
digitalWrite(trig_pin,HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin,LOW);
long duration=pulseIn(echo_pin,HIGH);
long distance=(duration/2)/29.1;
Serial.print(distance);
Serial.println("cm");
if(distance<20){
myservo.write(0);
delay(1000);
myservo.write(180);
delay(1000);
}
}
01: Servo 관련 함수 사용 위해 Servo.h 헤더 포함
02: SERVO 상수에 10번 핀을 할당합니다.
03: trig핀 11번 설정
04:echo핀 12번 설정
05: 서보제어를 위해 Servo 클래스인 myservo 객체를 생성
06~: setup 함수를 정의한다.
07: trig핀모드 출력 설정
08:echo핀모드 입력 설정
09:통신속도 9600
10:servo 함수에 attach함수를 호출하여 SERVO 핀(10) 연결
11: servo 객체에 write 함수를 호출하여 서보 모터를 0도 회전
12: loop함수 정의
13:trig핀 신호없음
14:2마이크로세컨즈 대기
15:trig핀 신호 출력
16:10마이크로세컨즈 대기
17:trig핀 신호없음
18:echo핀 입력들어온 시간 측정
19: 거리값 계산
20: 거리 출력
21: 거리 뒤에 "cm" 출력
22: 만약 거리가 20보다 작다면
23:servo 객체에 write 함수를 호출하여 서보 모터를 0도 회전
24:1초대기
25:servo 객체에 write 함수를 호출하여 서보 모터를 180도 회전
26:1초대기