아두이노에 초음파센서와 LCD모듈, 서보모터를 함께 연결해서 작동시켜 봅시다.
01. 아두이노 회로 구성하기
아래와 같이 회로를 연결해 봅시다.
LCD 연결
Gnd: Gnd
VCC:5V(브레드보드로연결)
SDA: A4
SCL: A5
초음파센서 연결
VCC: 5V(브레드보드로연결)
Trig: 11번
Echo:12번
Gnd:Gnd
서보모터
갈색:Gnd
빨강색:VCC(브레드보드연결)
주황색:10번핀
02. 아두이노 스케치하기
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
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);
lcd.init();
lcd.backlight();
}
void loop() {
digitalWrite(trig_pin,HIGH);
delayMicroseconds(1000);
digitalWrite(trig_pin,LOW);
long duration=pulseIn(echo_pin,HIGH);
long distance=(duration/2)/29.1;
Serial.print(distance);
Serial.println("cm");
lcd.print("HEIGHT");
lcd.print(distance);
lcd.print("cm");
lcd.begin(16,2);
delay(500);
if(distance<10){
myservo.write(0);
delay(1000);
myservo.write(180);
delay(1000);
}
}
01:Servo헤더포함
02: I2C 통신 라이브러리 불러오기
03:LCD 1602 I2C용 라이브러리 불러오기
04:LCD 설정 접근주소는 0x27, 16개문자 2행
05:SERVO 10번 할당
06:trig핀 11번 설정
07:echo핀 12번 설정
08:서보제어를 위해 Servo 클래스인 myservo 객체를 생성
09~: Setup 함수를 정의한다
10:trig핀 출력 설정
11:echo핀 입력 설정
12:통신속도를 9600으로 설정
13:서보모터를 SERVO인 10번핀에 제어
14:서보모터 각도 0도로 제어
15: LCD 초기화
16:LCD 백라이트 켜기
18:loop함수를 정의한다.
19:trig핀 초음파 출력
20:1000마이크로세컨즈대기
21:trig핀 초음파 멈춤
22:echo핀 입력들어온 시간 측정
23:거리 측정
24:거리값 출력(시리얼모니터에)
25:"cm"텍스트출력(시리얼모니터에)
26: LCD의 0번째칸 0행에
27: distance값 표시
28: LCD의 0번째칸 1행에
29: "cm"텍스트표시
30:500밀리초 대기
31:만약 거리가 10보다 작다면
32: 서보모터를 0도로 제어
33:1초 대기 후
34:서보모터를 180도로 제어
35:1초 대기