본문 바로가기 주메뉴 바로가기

1. 개요

프로보 GULC(Graphical User interface Light C language)는 프로보(Probo)에서 개발한 블록형 코딩 프로그램으로, 복잡한 C 언어를 그래픽 명령 블록으로 변환하여 누구나 쉽게 코딩할 수 있도록 설계되었습니다.

 

주요 특징


1. 블록형 코딩 인터페이스 : GULC는 복잡한 C 언어 코드를 그래픽 명령 블록으로 변환하여 사용자가 드래그 앤 드롭 방식으로 쉽게 코딩할 수 있습니다.


2. 단계별 학습 지원 : 아이들이 프로그램을 어려워하지 않고 스스로 코딩할 수 있도록 단계별 학습을 진행합니다.


3. 다양한 프로보 제품과 호환: CONNECT, PROBO, TECHNIC 등 다양한 프로보 제품과 호환되어 로봇 코딩 교육에 활용할 수 있습니다.

2. GULC 사용 준비


2.1. 프로그램 설치


- GULC 설치

1. PC버전
- PC버전을 다운로드하려면 아래 버튼을 클릭하세요.


- 설치 방법

1. GULC 클릭

2. 실행

3. 체크하고 Next

4. Install

5. Finish

슬라이더 이미지 1 슬라이더 이미지 2 슬라이더 이미지 3 슬라이더 이미지 4 슬라이더 이미지 5 슬라이더 이미지 6

3. 기본 사용법


3.1. 초기화면

메뉴 영역


1) 파일

 

새로 만들기 : 새 프로젝트를 만들 때 사용합니다. 새 프로젝트는 일반CPU, 파워CPU, 커넥트CPU로 구분됩니다.

열기 : 저장된 프로젝트를 열 때 사용합니다.

저장 : 작업 중인 프로젝트를 저장합니다.

다른이름으로 저장 : 작업 중인 프로젝트를 다른 이름으로 저장합니다.

끝내기 : GULC를 종료합니다

 

2) 편집

잘라내기 : 선택 중인 블럭을 잘라냅니다. 잘려진 블럭은 마우스에 드래그 됩니다.

복사 : 선택 중인 블럭을 복사합니다. 복사된 블럭은 마우스에 드래그 됩니다.

수정 : 선택 중인 블럭을 수정합니다. 여러 개의 블럭을 선택 중인 경우,

최상위 블럭을 수정합니다.

삭제 : 선택 중인 블럭을 삭제합니다.

실행취소 : 수행한 작업을 취소합니다.

재실행 : [실행취소]로 취소한 작업을 다시 실행합니다


​3) 실행

빌드 : 작업 중인 프로젝트의 에러를 체크하고, 문제가 없으면 hex 파일로 만듭니다.

다운로드 : hex 파일을 연결된 로봇에 다운로드합니다.

빌두 후 다운로드 : 빌드를 진행하고 생성된 hex파일을 다운로드합니다.


4) 보기

확대 : 코딩 영역을 확대
축소 : 코딩 영역을 축소

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타입이 맞는지 확인합니다.

4. 예제


TOP