로봇 제어 명령어
6-1 모터 연결하기
6-2 모터 속도 제어하기 6-3 모터 방향 제어하기
6-4 라이브러리 함수 제작하기 6-5 라이브러리 함수 활용하기 6-6 로봇 기본 동작 제어 실습
6-7 장애물 회피 자율 주행 구현하기 6-8 키패드 함수 구현하기
6-9 키패드 로봇 조종기
06
로봇 제어 명령어
06 - 1 모터 연결하기
1. 모터 연결 선 확인하기
06
2핀 케이블 왼쪽 모터 2핀 케이블
오른쪽 모터
로봇 제어 명령어
06 - 1 모터 연결하기
2. 모터 핀 위치 확인하기
06
모터2 (오른쪽 모터) 모터1 (왼쪽 모터)
로봇 제어 명령어
06 - 1 모터 연결하기
3. 왼쪽모터 케이블을 MOTOR1 단자에 연결하기
06
로봇 제어 명령어
06 - 1 모터 연결하기
4. 빨간색 케이블 선이 보드 안쪽으로 가도록 연결
06
로봇 제어 명령어
06 - 1 모터 연결하기
5. 오른쪽 모터 케이블을 MOTOR2에 연결
06
오른쪽 모터
왼쪽 모터
로봇 제어 명령어
06 - 1 모터 연결하기
6. 빨간색 선이 보드 안쪽으로 오도록 연결
06
로봇 제어 명령어
06 - 1 모터 연결하기
7. 최종 연결 결과
06
로봇 제어 명령어
06 - 1 모터 연결하기
8. 로봇 실습 주의사항
06
바퀴가 위로 올라오도록 본체를 그림과 같이 세워 놓습니다.
바퀴가 움직이면 로봇이
책상에서 떨어질 수
있습니다.
로봇 제어 명령어
06 - 1 모터 연결하기
8. 로봇 실습 주의사항
06
로봇 제어 명령어
06 - 2 모터 속도 제어하기
1. 모터 제어를 위한 아두이노 핀 설명
06
로봇 제어 명령어
06 - 2 모터 속도 제어하기
1. 모터 제어를 위한 아두이노 핀 설명
06
디지털 04번 디지털 05번 디지털 06번
디지털 07번 모터 드라이브
회로
왼쪽 모터
오른쪽 모터
로봇 제어 명령어
06 - 2 모터 속도 제어하기
1. 모터 제어를 위한 아두이노 핀 설명
06
디지털 04번 디지털 05번 디지털 06번
디지털 07번 모터 드라이브
회로
왼쪽 모터
오른쪽 모터 왼쪽 모터
오른쪽 모터
로봇 제어 명령어
06 - 2 모터 속도 제어하기
1. 모터 제어를 위한 아두이노 핀 설명
06
디지털 04번 디지털 05번 디지털 06번
디지털 07번 모터 드라이브
회로
왼쪽 모터
오른쪽 모터 왼쪽 모터
오른쪽 모터
모터의 회전 속도를
PWM으로 제어
로봇 제어 명령어
06 - 2 모터 속도 제어하기
1. 모터 제어를 위한 아두이노 핀 설명
06
디지털 04번 디지털 05번 디지털 06번
디지털 07번 모터 드라이브
회로
왼쪽 모터
오른쪽 모터 왼쪽 모터
오른쪽 모터
모터의 회전 방향을
결정
로봇 제어 명령어
06 - 2 모터 속도 제어하기
1. 모터 제어를 위한 아두이노 핀 설명
06
로봇 제어 명령어
06 - 2 모터 속도 제어하기
2. 왼쪽 모터 속도 제어 하기
06
디지털 04번 디지털 05번
왼쪽 모터
왼쪽 모터
모터의 속도 제어 (PWM 방식)
PWM 방식이기 때문에 디지털 핀에 연결되어
있지만 AnalogWrite 명령어를 사용해야 함
로봇 제어 명령어
06 - 2 모터 속도 제어하기
2. 왼쪽 모터 속도 제어 하기
06
void setup() {
}
void loop() {
AnalogWrite(5, 200) delay(2000)
AnalogWrite(5, 0) delay(2000)
}
PWM 방식이기 때문에 디지털 핀에 연결되어
있지만 AnalogWrite 명령어를 사용해야 함
로봇 제어 명령어
06 - 2 모터 속도 제어하기
3. 왼쪽 모터 속도 변화 시키기
06
void setup() {
}
void loop() {
for (int i = 0; i < 255; i++) {
AnalogWrite(5, i) delay(50)
} }
AnalogWrite 명령어에는
0 ~ 255 값을 입력할 수 있음
로봇 제어 명령어
06 - 3 모터 방향 제어하기
1. 왼쪽 모터 회전 방향 제어하기
06
디지털 04번 디지털 05번
왼쪽 모터
왼쪽 모터
디지털 04번 핀의 값이 HIGH : 0V ~ 5V 전압 생성 LOW : -5V ~ 0V 전압 생성
전진
후진
로봇 제어 명령어
06 - 3 모터 방향 제어하기
1. 왼쪽 모터 회전 방향 제어하기
06
void setup() {
}
void loop() {
//정방향 회전
DigitalWrite(4, HIGH) AnalogWrite(5, 200) delay(2000)
AnalogWrite(5, 0) delay(1000)
//역방향 회전
DigitalWrite(4, LOW) AnalogWrite(5, 200) delay(2000)
AnalogWrite(5, 0)
로봇 제어 명령어
06 - 4 라이브러리 함수 제작하기
1. 왼쪽 모터 제어용 함수
06
void RobotWrite(int left) {
left_power = abs(left)
AnalogWrite(5, left_power) if (left >= 0)
DigitalWrite(4, HIGH) else
DigitalWrite(4, LOW) }
로봇 제어 명령어
06 - 4 라이브러리 함수 제작하기
2. 기존 예제에 함수 통합
06
void RobotWrite(int left) {
left_power = abs(left)
AnalogWrite(5, left_power) if (left >= 0)
DigitalWrite(4, HIGH) else
DigitalWrite(4, LOW) }
//위쪽에 함수 코드 추가 void setup()
{ }
void loop() {
//정방향 회전 RobotWrite(200) delay(2000) RobotWrite(0) delay(1000) //역방향 회전
RobotWrite(-200) delay(2000)
RobotWrite(0)
로봇 제어 명령어
06 - 4 라이브러리 함수 제작하기
3. 양쪽 모터를 모두 사용하는 함수
06
void RobotWrite(int left, int rght) {
left_power = abs(left) right_power = abs(right) AnalogWrite(5, left_power) AnalogWrite(6, right_power) if (left >= 0)
DigitalWrite(4, HIGH) else
DigitalWrite(4, LOW) if (right >= 0)
DigitalWrite(7, HIGH) else
DigitalWrite(7, LOW) }
로봇 제어 명령어
06 - 4 라이브러리 함수 제작하기
4. 양쪽 모터를 모두 사용하는 함수 활용 예제
06
void RobotWrite(int left, int right) {
...
}
void setup() {
}
void loop() {
RobotWrite(200, 200) delay(1000)
RobotWrite(-200, -200) delay(500)
RobotWrite(-200, 200) delay(1000)
1초간 전진
1초간 후진
1초간 회전
로봇 제어 명령어
06 - 4 라이브러리 함수 제작하기
5. 함수를 완벽한 C언어 문법을 적용하여 별도의 파일로 작성
06
#include<Arduino.h>
void RobotWrite(int left, int right) {
int left_power = abs(left);
int right_power = abs(right);
analogWrite(5, left_power);
analogWrite(6, right_power);
if (left >= 0)
digitalWrite(4, HIGH);
else
digitalWrite(4, LOW);
if (right >= 0)
digitalWrite(7, HIGH);
else
digitalWrite(7, LOW);
로봇 제어 명령어
06 - 4 라이브러리 함수 제작하기
6. 별도의 파일로 작성된 코드를 RobotWrite.h 파일로 저장
06
◾ 기본적으로 C:\사용자\로그인 이름\문서\Arduino\Libraries 폴더가 표시된다.
◾ 기본 폴더 경로를 수정하지 말고 현재 표시된 경로에서 작업을 해야 한다.
◾ 파일을 저장하는 창이 표시되면, 폴더에서 RobotWrite 라는 이름으로 폴더를 새로 생성한다.
◾ 새로 생성된 폴더로 이동한 후에, RobotWrite.h 이름으로 현재의 라이브러리 함수를 파일로 저장한다.
로봇 제어 명령어
06 - 4 라이브러리 함수 제작하기
7. RobotWrite 폴더 생성 후, RobotWrite.h 파일로 저장
06
파일 형식이 *h 로 되어 있는 지 확인한다.
로봇 제어 명령어
06 - 5 라이브러리 함수 활용하기
1. 기존 예제에서 코드 상단에 아래의 명령어 추가
06
#include<RobotWrite.h>
로봇 제어 명령어
06 - 5 라이브러리 함수 활용하기
2. 로봇의 동작을 제어하는 예제
06
#include<RobotWrite.h>
void setup() {
}
void loop() {
RobotWrite(200, 200) delay(1000)
RobotWrite(-200, -200) delay(500)
RobotWrite(-200, 200) delay(1000)
기존 예제에서
함수 정의 부분을 제거하고 라이브러리를 사용하도록
#include 추가
로봇 제어 명령어
06 - 5 라이브러리 함수 활용하기
3. SPL 편집기에 내장된 로봇 내장 함수
06
로봇 제어 명령어
06 - 5 라이브러리 함수 활용하기
4. SPL 편집기에 내장된 로봇 내장 함수 활용 예제
06
void setup() {
}
void loop() {
DriveWrite(200, 200) delay(1000)
DriveWrite(-200, -200) delay(500)
DriveWrite(-200, 200) delay(1000)
}
로봇 제어 명령어
06 - 6 로봇 기본 동작 제어 실습
1. 기본 속도 제어 명령 만으로 간단한 실습 가능
06
종이컵
로봇 출발 위치 로봇 도착 위치
로봇 제어 명령어
06 - 6 로봇 기본 동작 제어 실습
1. 기본 속도 제어 명령 만으로 간단한 실습 가능
06
난이도가 낮은 미션 난이도가 보통인 미션
로봇 제어 명령어
06 - 7 장애물 회피 자율주행 구현하기
1. PSD 거리 센서를 아날로그 0번 핀에 연결
06
PSD 거리센서 아날로그 0번 핀
로봇 제어 명령어
06 - 7 장애물 회피 자율주행 구현하기
2. 장애물을 만나면 다음 동작 구동
06
센서 읽기
If 장애물을 만나면 1초간 후진 1초간 회전
0.1초간 전진
반복
로봇 제어 명령어
06 - 7 장애물 회피 자율주행 구현하기
3. 장애물을 만나면 회피한 후, 자율주행하는 코드
06
void loop() {
a = AnalogRead(0) if (a > 300)
{
DriveWrite(-200, -200) Delay(1000)
DriveWrite(0, 200) Delay(1000)
} else
DriveWrite(200, 200) Delay(100)
}
로봇 제어 명령어
06 - 7 장애물 회피 자율주행 구현하기
4. 프로젝트 실습
06
로봇이 전진할 때 헤드라이트를 켜시오 (컬러 LED바 활용) 로봇이 후진할 때 비상등을 켜시오 (컬러 LED바 활용)
로봇이 회전할 때 LED 셀이 한쪽 방향으로 이동하도록 하시오
로봇이 후진할 때 간단한 멜로디가 나오도록 하시오
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
1. 키패드 센서 연결하기
06
키패드 센서 모듈을 아날로그 0번에
연결합니다.
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
1. 키패드 센서 연결하기
06
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
2. 키패드 센서 값 확인하기
06
void setup() {
}
void loop() {
a0 = AnalogRead(0) PrintLine(a0)
delay(100)
}
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
3. 키패드 센서 값 기록하기
06
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
4. 키패드 버튼을 누르면 번호가 출력되는 기능 구현
06
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
4. 키패드 버튼을 누르면 번호가 출력되는 기능 구현
06
void loop() {
pin = 0
a = AnalogRead(pin) if (608 < a && a < 628)
PrintLine(1) else if (797 < a && a < 816)
PrintLine(2) else if (a> 895 && a<915)
PrintLine(3) else if (a> 666 && a<686)
PrintLine(4) else if (a> 724 && a<744)
PrintLine(5) Delay(100)
}
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
5. 번호를 리턴하는 함수로 제작하기
06
void loop() {
a = KeyPad(0) PrintLine(a) delay(100) }
int KeyPad(int pin) {
res = -1
a = AnalogRead(pin) if (608 < a && a < 628)
res = 1
else if (797 < a && a < 816) res = 2
else if (a> 895 && a<915) res = 3
else if (a> 666 && a<686) res = 4
else if (a> 724 && a<744) res = 5
return res }
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
6. 키패드 함수를 라이브러리로 추가하기
06
#include<Arduino.h>
int KeyPad(int pin) {
int res = -1;
int a = analogRead(pin);
if (608 < a && a < 628) res = 1;
else if (797 < a && a < 816) res = 2;
else if (a> 895 && a<915) res = 3;
else if (a> 666 && a<686) res = 4;
else if (a> 724 && a<744) res = 5;
return res;
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
7. 별도의 파일로 작성된 코드를 KeyPad.h 파일로 저장
06
◾ 기본적으로 C:\사용자\로그인 이름\문서\Arduino\Libraries 폴더가 표시된다.
◾ 기본 폴더 경로를 수정하지 말고 현재 표시된 경로에서 작업을 해야 한다.
◾ 파일을 저장하는 창이 표시되면, 폴더에서 KeyPad 라는 이름으로 폴더를 새로 생성한다.
◾ 새로 생성된 폴더로 이동한 후에, KeyPad.h 이름으로 현재의 라이브러리 함수를 파일로 저장한다.
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
7. 별도의 파일로 작성된 코드를 KeyPad.h 파일로 저장
06
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
8. 키패드 라이브러리 함수 사용하기
06
#include<KeyPad.h>
void setup() {
}
void loop() {
a = KeyPad(0)
PrintLine(a)
delay(100)
}
로봇 제어 명령어
06 - 8 키패드 함수 구현하기
9. 키패드 함수로 오르간 연주장치 만들기
06
#include<KeyPad.h>
void setup() {
}
void loop() {
a = KeyPad(0) if (a == 1)
tone(3, 262, 200) else if (a == 2)
tone(3, 294, 200) else if (a == 3)
tone(3, 330, 200) else if (a == 4)
tone(3, 349, 200) else if (a == 5)
tone(3, 392, 200)
로봇 제어 명령어
06 - 9 키패드 로봇 조종기
1. 키패드 버튼으로 로봇 조종하기
06
로봇 제어 명령어
06 - 9 키패드 로봇 조종기
2. 키패드 버튼 별 동작 정의하기
06
로봇 제어 명령어
06 - 9 키패드 로봇 조종기
3. 로봇 조종기능 완성하기
06
#include<KeyPad.h>
void loop() {
a = KeyPad(0) if (a == 1)
DriveWrite( 0 , 200) else if (a == 2)
DriveWrite( 200 , 200) else if (a == 3)
DriveWrite( 0 , 0) else if (a == 4)
DriveWrite( -200 , -200) else if (a == 5)
DriveWrite( 0 , 200) delay(100)
}