powerpoint 프레젠테이션vulkan.co.kr/doc_arduino_02/004/아두이노_plc... · 2018. 11....
TRANSCRIPT
로봇 제어 명령어
6-1 모터연결하기6-2 모터속도제어하기6-3 모터방향제어하기6-4 라이브러리함수제작하기6-5 라이브러리함수활용하기6-6 로봇기본동작제어실습6-7 장애물회피자율주행구현하기6-8 키패드함수구현하기6-9 키패드로봇조종기
06
로봇제어명령어
06 - 1 모터연결하기
1. 모터연결선확인하기
06
아두이노와 PLC를이용한 IoT구현실습
2
2핀 케이블왼쪽 모터
2핀 케이블오른쪽 모터
로봇제어명령어
06 - 1 모터연결하기
2. 모터핀위치확인하기
06
아두이노와 PLC를이용한 IoT구현실습
3
모터2 (오른쪽 모터) 모터1 (왼쪽 모터)
로봇제어명령어
06 - 1 모터연결하기
3. 왼쪽모터케이블을MOTOR1 단자에연결하기
06
아두이노와 PLC를이용한 IoT구현실습
4
로봇제어명령어
06 - 1 모터연결하기
4. 빨간색케이블선이보드안쪽으로가도록연결
06
아두이노와 PLC를이용한 IoT구현실습
5
로봇제어명령어
06 - 1 모터연결하기
5. 오른쪽모터케이블을MOTOR2에연결
06
아두이노와 PLC를이용한 IoT구현실습
6
오른쪽 모터
왼쪽 모터
로봇제어명령어
06 - 1 모터연결하기
6. 빨간색선이보드안쪽으로오도록연결
06
아두이노와 PLC를이용한 IoT구현실습
7
로봇제어명령어
06 - 1 모터연결하기
7. 최종연결결과
06
아두이노와 PLC를이용한 IoT구현실습
8
로봇제어명령어
06 - 1 모터연결하기
8. 로봇실습주의사항
06
아두이노와 PLC를이용한 IoT구현실습
9
바퀴가 위로 올라오도록본체를 그림과 같이세워 놓습니다.
바퀴가 움직이면 로봇이책상에서 떨어질 수있습니다.
로봇제어명령어
06 - 1 모터연결하기
8. 로봇실습주의사항
06
아두이노와 PLC를이용한 IoT구현실습
10
로봇제어명령어
06 - 2 모터속도 제어하기
1. 모터제어를위한아두이노핀설명
06
아두이노와 PLC를이용한 IoT구현실습
11
로봇제어명령어
06 - 2 모터속도 제어하기
1. 모터제어를위한아두이노핀설명
06
아두이노와 PLC를이용한 IoT구현실습
12
디지털 04번
디지털 05번
디지털 06번
디지털 07번 모터 드라이브회로
왼쪽 모터
오른쪽 모터
로봇제어명령어
06 - 2 모터속도 제어하기
1. 모터제어를위한아두이노핀설명
06
아두이노와 PLC를이용한 IoT구현실습
13
디지털 04번
디지털 05번
디지털 06번
디지털 07번 모터 드라이브회로
왼쪽 모터
오른쪽 모터
왼쪽모터
오른쪽모터
로봇제어명령어
06 - 2 모터속도 제어하기
1. 모터제어를위한아두이노핀설명
06
아두이노와 PLC를이용한 IoT구현실습
14
디지털 04번
디지털 05번
디지털 06번
디지털 07번 모터 드라이브회로
왼쪽 모터
오른쪽 모터
왼쪽 모터
오른쪽 모터
모터의회전속도를PWM으로제어
로봇제어명령어
06 - 2 모터속도 제어하기
1. 모터제어를위한아두이노핀설명
06
아두이노와 PLC를이용한 IoT구현실습
15
디지털 04번
디지털 05번
디지털 06번
디지털 07번 모터 드라이브회로
왼쪽 모터
오른쪽 모터
왼쪽 모터
오른쪽 모터
모터의회전방향을결정
로봇제어명령어
06 - 2 모터속도 제어하기
1. 모터제어를위한아두이노핀설명
06
아두이노와 PLC를이용한 IoT구현실습
16
로봇제어명령어
06 - 2 모터속도 제어하기
2. 왼쪽모터속도제어하기
06
아두이노와 PLC를이용한 IoT구현실습
17
디지털 04번
디지털 05번
왼쪽 모터
왼쪽 모터
모터의속도제어(PWM 방식)
PWM 방식이기 때문에 디지털 핀에 연결되어있지만 AnalogWrite 명령어를 사용해야 함
로봇제어명령어
06 - 2 모터속도 제어하기
2. 왼쪽모터속도제어하기
06
아두이노와 PLC를이용한 IoT구현실습
18
void setup(){}
void loop(){
AnalogWrite(5, 200)delay(2000)
AnalogWrite(5, 0)delay(2000)
}
PWM 방식이기 때문에 디지털 핀에 연결되어있지만 AnalogWrite 명령어를 사용해야 함
로봇제어명령어
06 - 2 모터속도 제어하기
3. 왼쪽모터속도변화시키기
06
아두이노와 PLC를이용한 IoT구현실습
19
void setup(){}
void loop(){
for (int i = 0; i < 255; i++){
AnalogWrite(5, i)delay(50)
}}
AnalogWrite 명령어에는0 ~ 255 값을 입력할 수 있음
로봇제어명령어
06 - 3 모터방향 제어하기
1. 왼쪽모터회전방향제어하기
06
아두이노와 PLC를이용한 IoT구현실습
20
디지털 04번
디지털 05번
왼쪽 모터
왼쪽 모터
디지털 04번핀의값이HIGH : 0V ~ 5V 전압생성LOW : -5V ~ 0V 전압생성
전진
후진
로봇제어명령어
06 - 3 모터방향 제어하기
1. 왼쪽모터회전방향제어하기
06
아두이노와 PLC를이용한 IoT구현실습
21
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)delay(1000)
}
로봇제어명령어
06 - 4 라이브러리 함수제작하기
1. 왼쪽모터제어용함수
06
아두이노와 PLC를이용한 IoT구현실습
22
void RobotWrite(int left){
left_power = abs(left)AnalogWrite(5, left_power)
if (left >= 0)DigitalWrite(4, HIGH)
elseDigitalWrite(4, LOW)
}
로봇제어명령어
06 - 4 라이브러리 함수제작하기
2. 기존예제에함수통합
06
아두이노와 PLC를이용한 IoT구현실습
23
void RobotWrite(int left){
left_power = abs(left)AnalogWrite(5, left_power)
if (left >= 0)DigitalWrite(4, HIGH)
elseDigitalWrite(4, LOW)
}
//위쪽에 함수 코드 추가
void setup(){
}
void loop(){
//정방향 회전RobotWrite(200)delay(2000)
RobotWrite(0)delay(1000)
//역방향 회전RobotWrite(-200)delay(2000)
RobotWrite(0)delay(1000)
}
로봇제어명령어
06 - 4 라이브러리 함수제작하기
3. 양쪽모터를모두사용하는함수
06
아두이노와 PLC를이용한 IoT구현실습
24
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)
elseDigitalWrite(4, LOW)
if (right >= 0)DigitalWrite(7, HIGH)
elseDigitalWrite(7, LOW)
}
로봇제어명령어
06 - 4 라이브러리 함수제작하기
4. 양쪽모터를모두사용하는함수활용예제
06
아두이노와 PLC를이용한 IoT구현실습
25
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
아두이노와 PLC를이용한 IoT구현실습
26
#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);
elsedigitalWrite(4, LOW);
if (right >= 0)digitalWrite(7, HIGH);
elsedigitalWrite(7, LOW);
}
로봇제어명령어
06 - 4 라이브러리 함수제작하기
6. 별도의파일로작성된코드를 RobotWrite.h파일로저장
06
아두이노와 PLC를이용한 IoT구현실습
27
◾ 기본적으로 C:\사용자\로그인 이름\문서\Arduino\Libraries 폴더가 표시된다.
◾ 기본 폴더 경로를 수정하지 말고 현재 표시된 경로에서 작업을 해야 한다.
◾ 파일을 저장하는 창이 표시되면, 폴더에서 RobotWrite 라는 이름으로 폴더를 새로 생성한다.
◾ 새로 생성된 폴더로 이동한 후에, RobotWrite.h 이름으로 현재의 라이브러리 함수를 파일로 저장한다.
로봇제어명령어
06 - 4 라이브러리 함수제작하기
7. RobotWrite폴더생성후, RobotWrite.h파일로저장
06
아두이노와 PLC를이용한 IoT구현실습
28
파일형식이 *h 로 되어있는 지 확인한다.
로봇제어명령어
06 - 5 라이브러리 함수활용하기
1. 기존예제에서코드상단에아래의명령어추가
06
아두이노와 PLC를이용한 IoT구현실습
29
#include<RobotWrite.h>
로봇제어명령어
06 - 5 라이브러리 함수활용하기
2. 로봇의동작을제어하는예제
06
아두이노와 PLC를이용한 IoT구현실습
30
#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
아두이노와 PLC를이용한 IoT구현실습
31
로봇제어명령어
06 - 5 라이브러리 함수활용하기
4. SPL 편집기에내장된로봇내장함수활용예제
06
아두이노와 PLC를이용한 IoT구현실습
32
void setup(){}
void loop(){
DriveWrite(200, 200)delay(1000)
DriveWrite(-200, -200)delay(500)
DriveWrite(-200, 200)delay(1000)
}
로봇제어명령어
06 - 6 로봇 기본동작 제어실습
1. 기본속도제어명령만으로간단한실습가능
06
아두이노와 PLC를이용한 IoT구현실습
33
종이컵
로봇 출발 위치 로봇 도착 위치
로봇제어명령어
06 - 6 로봇 기본동작 제어실습
1. 기본속도제어명령만으로간단한실습가능
06
아두이노와 PLC를이용한 IoT구현실습
34
난이도가 낮은 미션 난이도가 보통인 미션
로봇제어명령어
06 - 7 장애물 회피자율주행 구현하기
1. PSD 거리센서를아날로그 0번핀에연결
06
아두이노와 PLC를이용한 IoT구현실습
35
PSD 거리센서
아날로그0번 핀
로봇제어명령어
06 - 7 장애물 회피자율주행 구현하기
2. 장애물을만나면다음동작구동
06
아두이노와 PLC를이용한 IoT구현실습
36
센서 읽기
If 장애물을 만나면
1초간 후진1초간 회전
0.1초간 전진
반복
로봇제어명령어
06 - 7 장애물 회피자율주행 구현하기
3. 장애물을만나면회피한후, 자율주행하는코드
06
아두이노와 PLC를이용한 IoT구현실습
37
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
아두이노와 PLC를이용한 IoT구현실습
38
로봇이 전진할 때 헤드라이트를 켜시오 (컬러 LED바 활용)
로봇이 후진할 때 비상등을 켜시오 (컬러 LED바 활용)
로봇이 회전할 때 LED 셀이 한쪽 방향으로 이동하도록 하시오
로봇이 후진할 때 간단한 멜로디가 나오도록 하시오
로봇제어명령어
06 - 8 키패드 함수구현하기
1. 키패드센서연결하기
06
아두이노와 PLC를이용한 IoT구현실습
39
키패드 센서 모듈을 아날로그 0번에연결합니다.
로봇제어명령어
06 - 8 키패드 함수구현하기
1. 키패드센서연결하기
06
아두이노와 PLC를이용한 IoT구현실습
40
로봇제어명령어
06 - 8 키패드 함수구현하기
2. 키패드센서값확인하기
06
아두이노와 PLC를이용한 IoT구현실습
41
void setup(){}
void loop(){
a0 = AnalogRead(0)PrintLine(a0)delay(100)
}
로봇제어명령어
06 - 8 키패드 함수구현하기
3. 키패드센서값기록하기
06
아두이노와 PLC를이용한 IoT구현실습
42
로봇제어명령어
06 - 8 키패드 함수구현하기
4. 키패드버튼을누르면번호가출력되는기능구현
06
아두이노와 PLC를이용한 IoT구현실습
43
로봇제어명령어
06 - 8 키패드 함수구현하기
4. 키패드버튼을누르면번호가출력되는기능구현
06
아두이노와 PLC를이용한 IoT구현실습
44
void loop(){
pin = 0a = 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
아두이노와 PLC를이용한 IoT구현실습
45
void loop(){
a = KeyPad(0)PrintLine(a)delay(100)
}
int KeyPad(int pin){
res = -1a = 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
아두이노와 PLC를이용한 IoT구현실습
46
#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
아두이노와 PLC를이용한 IoT구현실습
47
◾ 기본적으로 C:\사용자\로그인 이름\문서\Arduino\Libraries 폴더가 표시된다.
◾ 기본 폴더 경로를 수정하지 말고 현재 표시된 경로에서 작업을 해야 한다.
◾ 파일을 저장하는 창이 표시되면, 폴더에서 KeyPad 라는 이름으로 폴더를 새로 생성한다.
◾ 새로 생성된 폴더로 이동한 후에, KeyPad.h 이름으로 현재의 라이브러리 함수를 파일로 저장한다.
로봇제어명령어
06 - 8 키패드 함수구현하기
7. 별도의파일로작성된코드를 KeyPad.h파일로저장
06
아두이노와 PLC를이용한 IoT구현실습
48
파일형식이 *h 로 되어있는 지 확인한다.
로봇제어명령어
06 - 8 키패드 함수구현하기
8. 키패드라이브러리함수사용하기
06
아두이노와 PLC를이용한 IoT구현실습
49
#include<KeyPad.h>
void setup(){}
void loop(){
a = KeyPad(0)PrintLine(a)delay(100)
}
로봇제어명령어
06 - 8 키패드 함수구현하기
9. 키패드함수로오르간연주장치만들기
06
아두이노와 PLC를이용한 IoT구현실습
50
#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)
delay(100)}
로봇제어명령어
06 - 9 키패드 로봇조종기
1. 키패드버튼으로로봇조종하기
06
아두이노와 PLC를이용한 IoT구현실습
51
로봇제어명령어
06 - 9 키패드 로봇조종기
2. 키패드버튼별동작정의하기
06
아두이노와 PLC를이용한 IoT구현실습
52
로봇제어명령어
06 - 9 키패드 로봇조종기
3. 로봇조종기능완성하기
06
아두이노와 PLC를이용한 IoT구현실습
53
#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)}