본문 바로가기

세미나/소프트웨어 세미나

[세미나] 3차시 - 아두이노 기초(초음파 센서, 서보모터)

반응형

☞ 진행 날짜 : 2022.07.20
☞ 진행자 : 이광진
☞ 기록자 : 야호선종
☞ IDE : Arduino 1.8.12
☞ 준비물 : PC, Arduino UNO R3, 브레드보드, 초음파 센서, RGB LED, 서보모터, 가변저항

 

 

 


목차

 1. 사칙연산

 2. 초음파 센서 제어

 3. 서보모터 제어

4. 과제

 

 

 


 

 

 

 

 

 

① 사칙연산

 

컴퓨터가 하는 사칙연산은 인간이 하는 사칙연산과 조금 다르다. 방식은 아래 PPT에 있는 표와 같으며, 표에 나와있는 예시는 자료형이 정수형(int) 일 때를 나타낸 것이다.

 

세미나 진행자 이광진 PPT 中

 

 

 

사칙연산에 쓰인 자료형이 무엇인지에 따라 답이 달라진다. 나누기의 경우 정수형으로 계산하면 계산의 결괏값도 정수형으로 반환되어야 하기 때문에 0.75가 아닌 0을 출력한다. 인간과 같은 사고로 연산 결과를 나타내기 위해서는 자료형을 선언할 때 정수형이 아닌 실수형으로 선언해야 계산 출력 값도 실수형으로 반환하여 0.75라는 값을 출력하게 된다. 

 

 

 


② 초음파 센서 제어

 

초음파 센서는 라디오마냥 2개의 스피커 같이 생긴 원이 있는데, 이 원은 각각 초음파를 보내는 역할과 초음파를 받는 역할을 한다. 핀을 보면 5V, GND 외에도 Trig, Echo 핀이 있는데, 이 핀들을 통해 초음파를 보내고 받는 시간을 계산하여 거리를 측정한 값을 알아낼 수 있다.

 

아래의 예제에서는 초음파 센서로 거리를 측정하여 거리 값이 15 미만이면 RGB LED를 빨간색으로, 30 미만이면 초록색으로, 그 외 값이면 파란색으로 점등하게 된다. 지난주에 조건문에 순서가 중요하다는 언급을 했었는데 순서에 주의를 기울여 조건문을 작성해보도록 하자.

 

 

 

회로도

 

세미나 진행자 이광진 PPT 中

 

 

5, 6, 7번 핀 : RGB LED

 

13번 핀 : 초음파 센서의 trig

12번 핀 : 초음파 센서의 echo

 

 

 

 

 

 

※ 소스 코드

 

세미나 진행자 이광진 PPT 中

 

 

loop 문의 첫 딜레이의 trig는 바로 이전 상태를 알 수 없기 때문에 LOW부터 시작한다. 중간중간 딜레이를 삽입하여 초음파를 보내는 시간을 기다려 준다. pulseIn은 아두이노 내에서 사용할 수 있는 내장 함수인데, 처음 써볼 때는 pulseln(엘앤)인 줄 알았다. pulseIn(아이앤)이니 이를 주의하여 쓰도록 한다. 펄스 인의 인은 대문자 아이(I)이다. 제대로 입력하면 빨간색으로 함수 표시가 뜬다.

 

pulseIn 함수는 pinMode에서 INPUT으로 선언했는데, echo가 HIGH 상태가 될 때까지 기다리는 함수이며, 그 사이의 시간이 반환된다. distance 값에 duration과 0.034를 곱해준 이유는 소리의 속도가 약 340m/s 이기에 cm로 단위 환산을 하기 위함이며, 이후에 2로 나누어 준 것은 초음파가 물체에 반사되어 돌아올 때 왕복하기 때문에 거리를 2로 나누어준 것이다.

 

 

 

 

☞ 한 번 해볼 것

 

7번 핀과 9번 핀을 바꾸고, analogWrite 를 이용해 LED 제어 해보기.

 

 

 

 


③ 서보모터 제어

 

세미나 진행자 이광진 PPT 中

 

 

 

일반 모터에 가변저항을 삽입하여 각도를 조절할 수 있도록 제작한 모터이다. 서보모터마다 다르나 기본적으로 0도에서 180도 사이의 각도로 움직인다. 힘으로 서보모터를 밀면, 최대각이 늘어나서 망가질 수도 있으니 손으로 누르지는 말자. 2 또는 4족 보행 로봇 등에 사용하지만, 힘의 강하지 않으면 버티기 힘들어서 고가의 제품들이 많다.

 

 

 

 

※ 라이브러리

서보모터 제어에는 아두이노 IDE에서 제공하는 라이브러리를 사용 할 수 있다. 라이브러리는 코드의 도서관과 같은 느낌으로 실제로 제어에 많은 것들이 필요하나 이 작업들을 사용자가 코딩을 쉽게할 수 있도록 개발자들이 만들어 놓은 아주 편한 도구이다. 다만, 개발자가 직접 만든 것으로 소스코드와 같이 저작권 규율에 맞춰 사용해야 한다.

 

 

// 라이브러리 불러오기
#include <Servo.h>

 

 

 

세미나 진행자 이광진 PPT 中

 

 

라이브러리는 아두이노 공식 홈페이지 라이브러리 레퍼런스 부분에 가면 더욱 자세히 확인할 수 있으니 참고바란다.

 

 

 

Libraries - Arduino Reference

Libraries The Arduino environment can be extended through the use of libraries, just like most programming platforms. Libraries provide extra functionality for use in sketches, e.g. working with hardware or manipulating data. To use a library in a sketch,

www.arduino.cc

 

 

 

 

 

 

※ 매핑(Mapping)

 

 

세미나 진행자 이광진 PPT 中

 

 

 

서보모터에 대한 함수를 사용하려면 위와 같이 라이브러리를 불러오는 작업을 해줘야한다. 아래에 나와있는 매핑(Mapping) 설명을 숙지하고, 예제 실습에서는 map 함수를 이용하여 서보모터의 각도 0~180도를 가변저항의 아날로그 값과 일치시켜 사용자가 직관적으로 센서 값을 받아들일 수 있는 코드를 작성해보도록 한다.

 

 

 

 

 

 

 회로도

 

 

세미나 진행자 이광진 PPT 中

 

 

 

 

 

※ 소스 코드

 

세미나 진행자 이광진 PPT 中

 

 

 

 


④ 과제

 

 

 

 

 

 

 

 

※ 비밀결사대 앙치킨

 

 

 

 

 

 

반응형