3.2. 블럭 소개
1. 기본 블럭
기본 블럭은 프로젝트 생성 시 기본적으로 배치되며 삭제 및 수정이 불가능한 블럭입니다.
프로보 CPU를 사용하려면 api.h 파일을 포함시켜야합니다.
api.h 파일은 라이브러리 함수의 선언파일로 기본 함수와 사용자 변수 등이 정의되어 있습니다.
main(void)은 프로그램의 최초 시작점입니다.
main(void)을 벗어나게 되면 프로그램이 종료됩니다.
start : 로봇을 시작하기 위해서 처음에 start함수를
써야 합니다. start함수는 내부 포트(I/O)
정보를 결정짓는 함수 입니다
end : 프로그램의 맨 마지막은 end 함수로 끝냅니다.
end 함수는 모든 동작과 포트출력을 종료합니다.
컴파일러의 권장사항으로 main 함수의 마지막은
return 명령어로 종료됩니다. AVR 계열의 CPU는
main 함수를 만들 때 명시적으로 'return 0;'을
사용하도록 권장하고 있습니다
2. 전역 블럭
전역 블럭은 main 블럭 상단(밖)에서만 사용되는 블럭입니다.
#define
상수를 정하기 위해서 사용합니다.
인자값 ① : 상수를 호출할 명칭
인자값 ② : 호출될 상수 값
Variable
변수를 정하기 위해서 사용합니다.
인자값 ① : 사용할 변수 타입
인자값 ② : 사용할
변수 명칭
인자값 ③ : 초기 선언 시 변수 값
3. 지역 블럭
지역 블럭은 main 블럭안에서만 사용되는 블럭입니다.
1) while
무한 반복 및 조건부 반복하기 위한 블럭입니다. 조건의 결과가 참이면 반복, 거짓이면 벗어나게 됩니다.
인자값 ① : 반복에 사용될
조건
2) if
조건부 분기 블럭입니다.
조건이 참이면 포함하고 있는 블럭을 실행하고, 거짓이면 포함하고 있는 블럭을 건너뛰게 됩니다.
인자값 ① : 분기를 위한 조건.
3) else
if
if블럭 다음에만 사용될 수
있습니다.
앞서 분기한 if 블럭이 거짓이었을 경우만 실행됩니다.
조건이 참이면 포함하고 있는 블럭을 실행하고, 거짓이면 포함하고 있는 블럭을 건너뛰게 됩니다.
인자값 ① : 분기를 위한 조건.
4) else
if 블럭 또는 else if 블럭 다음에만 사용될 수
있습니다. 앞서 분기한 if 블럭 또는 else if
블럭이 거짓이었을 경우만 실행합니다.
else는 조건없이 포함한 블럭을 실행합니다.
5) for
원하는 횟수만큼 반복하기 위한 블럭입니다.
변수에 초기값을 주고, 비교하여 조건이 참이면 반복, 반복할 때 마다 변수를 증감 합니다
6) switch
주어지는 값에 따라 다른 분기를 하기 위한 블럭입니다.
인자가 되는 변수의 값과 일치하는 case블럭으로 분기시킵니다. switch블럭 안에 최소 하나의 case블럭이 있어야 합니다.
인자값 ① : 분기에 사용될 변수
7) case
switch 블럭 안에서만 사용될 수 있습니다.
분기될 경우의 수를 지정하여 사용합니다.
case 분기는 break블럭을 만나기 전까지 해당 case블럭의 이하 블럭을 모두 실행시킵니다.
8) default
switch 블럭 안에서만 사용될 수 있습니다.
switch 블럭의 인자값이 모든 case문의 값과일치하지 않을 경우 default블럭으로 분기됩니다.
9) motor 1
motor1, 2, 3,
4함수는 모터를 구동하기 위한 기본 함수입니다.
motor 3, 4함수는 파워CPU에만 구현된 함수이며 주로 4륜 구동일 때
사용합니다.
인자값 ① : -20 ~ 20 이며 속도를 의미합니다.
음수일 경우 반 시계방향으로 움직입니다.
10) motor
motor함수는 motor1, motor2, delay함수가 조합된 함수입니다.
인자값 ① : -20 ~ 20 이며 속도를 의미합니다.
인자값 ② : -20 ~ 20 이며 속도를 의미합니다.
인자값 ③ : 0 ~ 65535 이며 시간을 의미합니다
11) allmotor
allmotor함수는
파워CPU에만 구현된 함수 입니다.
조합함수로 motor1, motor2, motor3, motor4 함수가 조합된 함수입니다.
인자값 ① : -20 ~ 20 이며 속도를 의미합니다.
인자값 ② : -20 ~ 20 이며 속도를 의미합니다.
인자값 ③ : -20 ~ 20 이며 속도를 의미합니다.
인자값 ④ : -20 ~ 20 이며 속도를 의미합니다.
12) wheel1
wheel함수는 motor1, motor2함수가 조합된 함수입니다.
인자값 ① : -20 ~ 20 이며 속도를 의미합니다.
인자값 ② : -20 ~ 20 이며 속도를 의미합니다.
13) whell2
wheel함수는 motor3, motor4함수가 조합된 함수입니다.
인자값 ① : -20 ~ 20 이며 속도를 의미합니다.
인자값 ② : -20 ~ 20 이며 속도를 의미합니다.
14) servo1
servo1, 2, 3, 4함수는 서보모터를 구동하기 위한 함수입니다. B1, B2, B3, B4에 꽂아 사용합니다.
인자값 ① : 0 또는 1 ~
100
(0=서보토크 풀림, 1=0도, 100=180도)
15) on
on함수는 LED보드 켜거나 보이스 보드 등을 구동하기 위한 함수 입니다.
B1, B2, B3, B4에 꽂아 사용합니다.
인자값 ① : B1, B2, B3, B4
16) off
off함수는 LED보드 끄거나
보이스 보드 등을 구동하기 위한 함수 입니다.
B1, B2, B3, B4에 꽂아 사용합니다.
인자값 ① : B1, B2, B3, B4
17) play
play함수는
멜로디를 출력하는 함수 입니다.
melody, delay함수가 조합된 함수입니다.
인자값 ① : 0, do4~si7까지 4옥타브로 음의 높이를 의미합니다. (0:쉼표)
인자값 ② : n1~n32까지 음의 길이를 의미합니다.
18) buzzer
buzzer함수는 멜로디를
출력하는 함수입니다.
인자값 ① : do4~si7까지 4옥타브로 음의 높이를 의미합니다.
인자값 ② : 0~255 동작 횟수를 의미합니다.
인자값 ③ : 0~65535 on 시간을 의미합니다.
인자값 ④ : 0~65535 off 시간을 의미합니다.
19) tempo
tempo함수는 play,
melody함수를 사용할 때 음의 속도에 영향을 줍니다.
인자값 ① : 0~255 (값이 작을수록 빠릅니다.)
20) melody
melody함수는 멜로디를
출력하는 함수입니다.
인자값 ① : 0, do4~si7까지 4옥타브로 음의 높이를 의미합니다. (0: 쉼표)
21) start_melody
start_melody함수는 도레미파솔라시도 멜로디를 출력하는 함수 입니다.
melody, delay함수가 조합된 함수입니다.
인자값 ① : 0~255 음의 길이를 의미합니다.
(작을수록 빨리 움림)
22) end_melody
end_melody함수는 도시라솔파미레도
멜로디를 출력하는 함수 입니다.
melody, delay함수가 조합된 함수입니다.
인자값 ① : 0~255 음의 길이를 의미합니다.
(작을수록 빨리 움림)
23) level_up_melody
level_up_melod함수는 도미솔도 멜로디를
출력하는 함수 입니다.
melody, delay함수가 조합된 함수입니다.
인자값 ① : 0~255 음의 길이를 의미합니다.
(작을수록 빨리 움림)
24) level_down_melody
level_down_melod함수는 도솔미도 멜로디를 출력하는 함수 입니다.
melody, delay함수가 조합된 함수입니다.
인자값 ① : 0~255 음의 길이를 의미합니다.
(작을수록 빨리 움림)
25) delay
delay함수는 시간지연
함수입니다.
인자값 ① : 0~65535 (100=0.1초)
26) timer
timer함수는 주로 timer_read()함수와 함께 사용되는 함수로 타이머를 셋팅 할 수 있습니다.
주로 0부터 시작하게 됩니다.
인자값 ① : 0~65535
27) rgbled1
rgbled1함수는 RGB
LED보드를 동작시키는 함수 입니다. B1, B2, B3, B4에 꽂아 사용합니다.
인자값 ① : RGBOFF, 1~100
(api.h 파일 테이블 참조)
28) EEPROM
EEPROM_write함수는
지워지지 않는 메모리 공간에 값을 저장하는 함수 입니다.
전원이 꺼지더라도 유지됩니다.
인자값 ① : 0~511 (어드레스를 의미합니다)
인자값 ② : 0~255 (저장할 값을 의미합니다)
29) FND
fnd함수는 0~99까지의 숫자를 표현할 수 있는 함수입니다.
인자값 ① : 0~99, 100
(0~99=표시 숫자를 의미합니다.)
(100=꺼짐)
30) 직접 입력
명령문 및 기타 입력을 직접
타이핑할 수 있는 블럭입니다. 입력 줄 끝에 ‘;’를 자동으로 붙여줍니다.
(줄 끝에 ‘;’까지 입력 했다면 생략됩니다.)
3.3. 로봇에 다운로드 하기
1. 빌드
1) 전체화면 상단에 있는 단축아이콘 또는 실행의 빌드버튼을 눌러 빌드를
진행합니다.
2) 에러가 발생한다면 에러라인 번호를 표시해주고 에러가 없다면 빌드가 완료됩니다.
2. USB 드라이버 설치
1) 전체화면 상단에 있는 단축아이콘 또는 실행의 다운로드를 눌러 다운로드를
진행합니다
2) 컴퓨터에 다운로드에 필요한 드라이버가 설치되어 있지 않다면 아래와 같이 드라이버
설치권고 창이 뜹니다.
[예]을 눌러서 드라이버 설치를 진행합니다.
3) USB 드라이버 설치
- 검은색 USB 드라이버를 선택해 설치합니다.
- 하얀색 USB 드라이버는 구형이므로 신형 USB로 교체 후 진행하세요.
4) Install
- Install 버튼을 클릭
- 확인 버튼 클릭
5) 문제 해결
- 연결되지 않을 경우 Uninstall을 클릭한 뒤 다시 Install하여 재설치합니다.
3. 다운로드
-전체 화면 상단에 있는 다운로드나 빌드 후 다운로드 버튼을 눌러 진행합니다.
* 주의사항
- USB다운로더가 컴퓨터와 로봇에 잘 연결되어 있는지 확인합니다.
- 프로젝트 CPU타입과 로봇의 CPU타입이 맞는지 확인합니다.