목차 - RokitDISKrobolink.ipdisk.co.kr/publist/HDD1/download/hard/cubeworks/SW/sw... · 04....

176

Transcript of 목차 - RokitDISKrobolink.ipdisk.co.kr/publist/HDD1/download/hard/cubeworks/SW/sw... · 04....

-2-

목차

소프트웨어교육이란?

01. Software Education KIT

02. 큐브웍스

03. 스크래치와로킷브릭

04. 로킷브릭의설치

1장로킷블록사용하기

01. 블록, 스크립트, 스프라이트

02. 스크립트만들기

03. 변수와반복그리고조건

04. 그림그리기와스프라이트조종하기

2장로킷시뮬레이터

01. 인벤터보드시뮬레이션

02. 게임시뮬레이션

03. 로봇구동시뮬레이션

04. 자신만의시뮬레이터만들기

3장로봇과큐브웍스

로봇의기초

01. 모터구동의기초

02. 어보이더

03. 바닥감지로봇

04. 라인트레이서

-3-

소프트웨어

교육이란?

SW KIT / 큐브웍스 / 로킷브릭

-4-

Software Education KIT

1. 왜소프트웨어코딩교육이중요할까?

소프트웨어가 기반이 되는 과학 기술의 시대에 머릿속의 무언가를 세상에 보여주는 단계에서 소프트웨어는 가장 기본적인수단이 되며, 이를 통해 생각과 일을 처리하는 능력 및 학생들이 소프트웨어적인 사고를 갖게 하는 것이 목표입니다.

2. 소프트웨어를통한로봇제어

소프트웨어 코딩을 통한 알고리즘 능력을 통해 로봇을 제어함으로써 다양한 아이디어 및 하드웨어 제어능력을 배양합니다.

문제 발생시 컴퓨터에게 명령

효율적으로 해결 할 수 있는 사고력을 키움

Computational Thinking

-5-

큐브웍스

1. 3면이모두결합가능한완벽한 3D 블록

어려운 조립과 많은 시간을 할애했던 조립부분과 디테일하게표현하기 어려운 부분을 손쉽게 만들 수 있는 3D 블록입니다.

2. 간편한로봇, 하드웨어제어

센서, 부저, 그리고 DC모터, Servo 모터 등을 손쉽게 제어할 수있는 통합형 로봇 제어기와 간편히 연결하면 되는 쉬운 제어성을 가지고 있습니다.

-6-

스크래치와 로킷 브릭 (1)

Java와 C++같은 대부분의 프로그래밍 언어는 텍스트 기반으로 구성되어 있기 때문에 초보자들이 접근하기에 많은 어려움이 있습니다.

하지만 미국 MIT 대학의 미디어랩 (Media Lab)에서 개발한 스크래치(Scratch)는 시각화된 프로그래밍 언어로서 보다 쉽고 재미있게 프로그래밍을 배울 수 있도록 하였습니다.

본래 스크래치는 아이들을 위한 교육용으로 제작되어졌으며컴퓨터 프로그래밍에 관한 풍부한 경험을 쌓을 수 있도록 하는데 그 목적을 두고 있습니다만 컴퓨터 프로그래밍에 관심이있는 일반 입문자들 에게도 적극 권장되고 있는 바입니다.

Arduino와 같은 Text 기반의 프로그램도 있지만, 문법적인 기초지식이 필요하여 다루기 어렵기 때문에 최근에 Scratch방식으로 제어되는 Scratch for Arduino, Snap for Arduino 등이 만들어지고 있습니다.

이러한 프로그램도 모두 Scratch를 기반으로 프로그래밍 하게하는 유사 프로그램입니다.

-7-

스크래치와 로킷 브릭 (2)

Rokit Brick은 Snap4Arduino를 기반으로 기존 스크래치 프로그램에 로봇, 드론등 다양한 제어 기능등이 합쳐져 개발된 스크래치 방식의 소프트웨어이며, 사용방법은 스크래치와 동일합니다.

로킷 스마트와 드론 파이터 등의 버튼들을 통해 하드웨어를실시간으로 스크래치 형식을 통해 제어할 수 있게 됩니다.

-8-

로킷 브릭의 설치 (1)

로킷 브릭은 간단히 프로그램 폴더를 원하는 경로에 위치 시키고 ‘Rokitbrick.exe’ 실행파일을 클릭하면 됩니다.

-9-

로킷 브릭의 설치 (2)

Rokit Brick 프로그램으로 인벤터 보드를 제어하기 위해서는

다음과같이 연결이 필요합니다.

1. Downloader와 Board Cable 를 연결 합니다.

2. Downloader와 USB Cable을연결합니다.

3. Inventor Board와 컴퓨터를연결합니다.

(Inventor Board UART에 Board Cable 연결)

-10-

로킷 브릭의 설치 (3)

PC와 인벤터 보드 연결후, 제일 먼저 USB 케이블 드라이버 설치를

진행해야합니다. ( www.rokitarduino.org 참조 )

드라이버설치 및 COM번호를 확인후Rokit Brick의 로킷스마트

블록 카테고리를 선택하고 ‘보드에 연결하기’ 버튼을 눌러 각자의

올바른포트번호를 선택하여 연결하는 것으로 설치가완료됩니다.

-11-

예제와 연습문제 다운로드

교재에서요구하는 예제와 연습문제는 로보링크 기술지원 홈페이지 http://rokitarduino.org 로 접속하셔서 오른쪽 상단의DOWNLOADS (다운로드) 메뉴를 클릭, SW Education kit의 RokitBrick 예제 및 연습문제 스크립트 파일 다운로드 하기 에서 통합 파일을 다운로드 받으시면 됩니다.

rokitarduino.org로 접속

상단 DOWNLOADS 클릭

SW Education kit의 하위메뉴에서통합 파일을 다운로드

-12-

1장로킷블록사용하기

01블록, 스크립트,스프라이트

-13-

로킷 브릭의 구성

기본적인 모든 메뉴와 화면구성은 스크래치와 유사합니다. 비교하여 동작해보면 보다 쉽게 빨리 적응할 수 있습니다. 스크래치 유저라면 어렵지않게 바로 사용할 수 있습니다.

시작/중지무대 확대/축소

무대(Stage)

스프라이트목록

탭 목록

스크립트 창

블록 팔레트 메뉴

-14-

로킷 브릭의 구성

메뉴를 통해 파일을 불러오거나 쓸 수 있습니다. 열기, 저장하기는 프로그램 내부에 저장되며, 외부로 파일을 공유하려면 가져오기ㆍ블록내보내기의 기능으로 .XML 파일형식을 이용해공유 가능합니다. 또한 언어는 원하는 형식으로 선택할 수 있습니다.

-15-

블록, 스크립트, 스트라이프

하나하나낱개의단위를‘블록’ 이라합니다.블록마다고유색상을가지고있어, 색상을기억하고있으면프로그래밍하기가편해집니다.

로킷 브릭에는 프로그래밍을 할때 쓰이는 기본 단위가

있습니다. 블록과 스트라이프, 스크립트에 대해 알아봅시다.

블록을스크립트창으로드래그해두개이상의블록이합쳐지면‘스크립트’라부릅니다.

스프라이트란로킷브릭의핵심개체이며여러스프라이트가모여하나의프로젝트를구성합니다. 모형부터소리까지전반적인역할을주관하게됩니다.

-16-

햇(hat) 블록 사용하기

마우스를 이용하여 왼쪽 클릭 후 드래그 하여 스크립트 영역에원하는 위치에 놓으면 됩니다.

모자처럼 생긴 햇(Hat) 블록은 명령을

시작하게 하는 시작 블록입니다.

다른 블록 중 하나를 똑같은 방법으로 붙여봅니다. 이렇게 모아지면 하나의 스크립트가 됩니다.

-17-

동작 블록 사용하기

실제스프라이트의이미지를움직이게하는블록을동작블록이라하며, 햇블록과함께사용하여야동작이가능합니다.

햇블록과 같이동작블록을연결하고어떻게동작하는지실행하여봅시다.

-18-

무한 반복 블록 사용하기

무한반복블록은안에들어있는블록들을무한반복시키거나무한반복블록안에있는조건블록을지속적으로사용하게해주는블록입니다.

무한반복블록같이동작블록을연결하고어떻게동작하는지실행하여봅시다.

-19-

실습해 봅시다

1. 스프라이트회전시키기: 아래두가지스크립트는클릭할때마다 스프라이트가회전할수있도록해줍니다. 두스크립트를실행해보고어떤차이가있는지확인해보세요.

’클릭했을때’ 블록은 스크립트를 클릭했을 때에만 스프라이트가회전합니다. 하지만 오른쪽 ‘when I am pressed’ 블록은 스크립트를 클릭 할때 뿐아니라 스테이지에 있는스프라이트를 클릭할때에도 스프라이트가회전합니다.

2. 스프라이트회전컨트롤: 키보드의 왼쪽화살표키를누르면스프라이트가왼쪽으로회전하고 오른쪽화살표키를누르면오른쪽으로회전할수있도록해봅시다.

도움말:회전블록의회전방향에유의하도록합시다!

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-20-

실습해 봅시다

3.스프라이트이동시키기:키보드의왼쪽화살표키를누르면스프라이트가왼쪽으로이동하고오른쪽화살표키를 누르면오른쪽으로이동하게해봅시다. 이때스프라이트가이동하다가스테이지의벽을만나면 더이상이동하지않고멈추게합시다.

도움말: 왼쪽으로 움직일 때에는 –값을 주어야 한다는 점에 유의하세요. ‘벽에닿으면튕기기’블록을추가하여 벽에닿았을때좌표 값이줄거나 늘지않도록함으로 스프라이트가 벽 너머로 넘어가지 않도록하였습니다.

4. 스프라이트추가하기: ‘새로운스프라이트추가하기’ 버튼을눌러두개의스프라이트를스테이지에나타나게해봅시다. 스페이스키를눌렀을때첫번째스프라이트는회전을하고두번째스프라이트는 좌우로(혹은아래위로) 반복해서움직이게해봅시다.

도움말: 한 개의 스프라이트 영역에 두 개의 스크립트를 모두 작성하지않도록유의합니다.

첫번째스프라이트 두번째스프라이트

-21-

연습문제

1.옆의그림은동작카테고리에서발견할수있는블록들입니다.두블록이갖고 있는 공통점과 차이점엔 무엇인지조사해보도록합시다.

2. 스프라이트를키보드의화살표키에따라움직일수있게해봅시다. 위쪽화살표를누르면위쪽으로이동하고 아래쪽화살표를누르면아래쪽으로이동하며왼쪽화살표를누르면왼쪽으로이동하고오른쪽화살표를누르면오른쪽으로이동하게스크립트를작성해봅시다.

3. 옆의그림처럼‘모양’탭을클릭한후붓모양버튼을클릭하여스프라이트편집기에서동그란원을그려서공모양의새로운스프라이트를추가합니다. 그다음이스프라이트가 스테이지이곳저곳을다닐수있도록합니다. 벽에닿을때에는반대편방향으로튕겨야합니다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-22-

연습문제

4. 스프라이트를2개만들어줍니다. 키보드를아무거나누르면두개의스프라이트가 동시에움직이기시작하며자유롭게스테이지이곳저곳을다니게하여봅시다. 첫번째스프라이트의움직임은느리게하고두번째스프라이트의속도는좀더빠르게해줍니다. 두스프라이트모두벽을만나면다른방향으로튕겨서움직여야합니다

5. 정지해있던스프라이트에마우스포인터를갖다대면계속회전할수있도록해봅시다. 이때 ‘관찰’카테고리의‘마우스의X좌표’블록을사용하여스프라이트에마우스포인터가가까워지면회전하는속도가느려지고멀어질수록빠르게돌게하여봅시다.

-23-

1장로킷블록사용하기

02스크립트만들기

-24-

소리와 모양 파일 가져오기

소리파일은특정한시점에재생하도록하여스크립트와스프라이트의효과를더할수있습니다.

메뉴> 파일에서소리를선택합니다.

Dog1.wav 소리파일을선택합니다.

클릭하면Dog1.wav의소리가재생됩니다.

-25-

소리와 모양 파일 가져오기

‘클릭했을때’ 햇블록을드래그합니다.

소리내기블록을넣은후빈칸에해당파일은선택합니다.

클릭하여실행해보세요.

-26-

소리와 모양 파일 가져오기

모양파일은스프라이트에자신이원하는이미지를불러와서제어할수있도록되어있으며, 자신이직접만들거나원하는파일을불러올수도있습니다. 여기서는제공되는이미지를 선택해봅니다.

메뉴에서모양을선택합니다.

무대에dog1의이미지(스프라이트)가나타났습니다.

모양에서dog1-a.png를선택합니다.

-27-

소리와 모양 파일 가져오기

자신이직접만들거나원하는파일을불러올수도있습니다. 이번에는직접자신이원하는이미지를가져오고직접그린것도추가해보도록하겠습니다.

새로운 스프라이트추가하기

새로운 스프라이트그리기

파일 – 가져오기 – 원하는이미지 클릭 하시면 유저가 원하는 이미지(스프라이트)로 변경이 가능 합니다.

유저가 스프라이트를 직접 그릴 수도 있습니다.

스프라이트의 이름도 유저가 변경가능 합니다.

-28-

소리내기 블록 사용하기

예제의소리파일을가지고와서주인공이낼수있는효과를줄수있습니다.

클릭하면 강아지가 “멍멍” 소리를 내며 10만큼 앞으로이동 합니다.

직접 녹음한 소리파일이나 원하는 음악등의 파일을 직접 가져다가 활용 할 수 있습니다.

-29-

말풍선 블록 사용하기

소리에이어서눈으로보일수있도록말풍선이추가되는블록이며특히시간과함께나타났다가사라지게하는자막같은효과를줄수있습니다.

아래의 그림은 말 풍선과 생각 풍선을 사용한 예입니다.

에 입력한 단어가 2초동안 말풍선에 나타납니다.

에 입력한 단어를 말풍선에 나타납니다.

에 입력한 단어가 2초동안 생각풍선에 나타납니다.

에 입력한 말이 생각풍선에 나타납니다.

-30-

실습해 봅시다

1. 스프라이트벽에튕기기: 세개의스프라이트를만들어줍니다. 각각의스프라이트는스테이지이곳저곳을자유롭게다닐수있도록합니다. 이때‘방송하기’블록을사용하여첫번째스프라이트가움직이기시작할때다른스프라이트들도동시에움직임을시작할수있도록해봅시다.

2. 키보드로소리제어하기: 프로젝트메뉴의‘소리’목차를클릭하면옆의그림처럼가져올수있는소리목록을볼수있습니다. 여기서dog1.wav 파일을클릭하여로드한후에키보드의‘d’키를누르면이소리파일이재생될수있도록합시다.

도움말: 소리 탭을 클릭하여 현재 로드된소리 파일 목록에 사용자의 다른 폴더에있는 *.wav 파일을 드래그하여 소리 파일을추가할수있습니다.

첫번째스프라이트 두번째스프라이트 세번째스프라이트

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-31-

실습해 봅시다

3. 연주해보기: ‘소리’카테고리의음연주블록을사용하여 스프라이트를클릭했을때‘도레미파솔라시도’연주가시작되도록합시다.

4. 키보드로말풍선제어하기: 키보드의방향키중왼쪽화살표를누르면스프라이트가왼쪽으로이동하면서‘LEFT!’라는메시지가담긴말풍선이스프라이트에나타나고오른쪽화살표키를누르면스프라이트가오른쪽으로이동하면서‘RIGHT!’라는메시지가담긴말풍선이스프라이트에나타나도록해보세요.

도움말 : 61, 63, 66, 68 음은 반음입니다. 따라서 이 예제에는 사용되지 않았습니다. 음계의 숫자가 커질수록 음이 높아지고 작아질수록음이낮아집니다.

-32-

실습해 봅시다

5. 회전각도알아보기: 스크립트를클릭할때마다10도씩시계방향으로스프라이트가회전하도록합니다. 이때말풍선으로스프라이트가자신의회전각도를알려주도록스크립트를작성해봅시다

6. 좌표알아보기: 키보드의왼쪽과오른쪽방향키로스프라이트를왼쪽과오른쪽으로이동시킵니다. 이때스프라이트에말풍선으로스프라이트의X좌표값을항상나타낼수있도록스크립트를작성해봅시다.

도움말 : 보라색 말풍선 만들기 블록에 동작 카테고리에 있는 ‘방향’ 리포터 블록을 결합하였습니다. 이렇게 결합시키면 말 풍선에는 스프라이트의회전방향이각도로표시됩니다.

도움말 : 동작 카테고리에 있는 ‘X좌표’ 블록을 말하기 블록에 결합하였습니다. 스프라이트를이동시키면서 말풍선에나타난 값을관찰해보면 5씩증가하거나감소하는것을볼수있습니다.

-33-

연습문제

1. 소리 카테고리에 있는 음계 연주 블록을 사용해서 간단한 동요나 음악을연주할 수 있도록 스크립트를 작성해봅시다.이때아래블록을이용하여 빠르기를 조절해 연주하여 보고, 느리게도연주하여봅시다.

2. 스크립트를클릭하면도레미파솔라시도가계속해서연주됩니다. 이때‘q’키를누르면연주속도가느려지고‘w’키를누르면원래의연주속도가되고‘e’키를누르면연주속도가빨라지게해봅시다.

3. 키보드의방향키로스프라이트를위, 아래, 오른쪽, 왼쪽으로조종하도록스크립트를작성합니다. 이때말풍선으로이동중인스프라이트의좌표를표시합시다. X좌표(가로) 방향으로움직일때에는X좌표값이말풍선에표시되고Y좌표(세로) 방향으로움직일때에는Y좌표값이표시되게합시다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-34-

연습문제

4. 고양이들의대화–말풍선넣기:옆그림처럼스테이지에스프라이트2개를놓습니다.(cat2.gif 사용) 왼쪽과오른쪽고양이는각각다른스프라이트입니다.

왼쪽의고양이가말을걸면잠시후에오른쪽의고양이가대답을합니다. 제어카테고리에있는 '방송하기' 블록을이용하여두스프라이트가말을주고받을수있도록합시다. w,a,s,d키를누르면각각키에따라왼쪽고양이가다른말을하고이말에따라오른쪽고양이도각각다른대답을할수있도록스크립트를만들어봅니다.

5. 고양이들의대화–소리내기: 고양이들의대화가완성되었다면말풍선이생길때마다고양이울음이나오도록합시다. 프로젝트메뉴의‘소리’목차를클릭하여왼쪽스프라이트에는Kitten.wav 파일을로드하여울음소리로사용하고오른쪽스프라이트에는Meow.wav 파일을로드하여울음소리로사용합니다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-35-

1장로킷블록사용하기

03변수와반복그리고조건

-36-

변수란?

Sum이라는변수를만들고변수의값을바꾸는예

변수란값이변하는수를말합니다. 말그대로지금의값을다른값으로마음대로바꿀수있다는것이변수입니다. 변수를사용하려면먼저이름을지어야하며이런이름들을명칭이라고합니다. 스크래치자체에서도변수블록을생성할수있으며명칭을직접만들어사용할수있습니다.

변수를왜사용해야하나요?

이미지의동작도숫자의변화에의해변화되며, 로봇, 드론의모든값들도숫자의값으로움직입니다. 그리고센서의값들도감지된정도에따라변화하는속성을가지고있습니다. 이러한모든것을위해서변수를사용하여야합니다.

-37-

변수 블록 만들기

변수블록탭을클릭하여변수만들기버튼을누르고원하는변수이름을적어줍니다.

여기서는SUM이라는변수를만들어보겠습니다.

-38-

햇블록두개를드래그합니다.

따라해봅시다 - 키보드로 숫자변수 증감시키기

변수 블록 만들기

변수블록으로들어가해당블록을놓아준후 1,-1을각각넣어주세요.

-39-

햇블록두개를드래그합니다.

변수 블록 만들기

형태블록에서위와같이블록아래에놓아줍니다.

도움말: 값에대한정확한모니터링(monitoring)은스테이지의 변수값컨트롤보다말풍선으로확인하는것이좋습니다. 값을줄일때에는–부호를붙여야합니다.

-40-

4번에준비했던SUM 변수를안녕안에넣어줍니다.

변수 블록 만들기

제어블록에서위와같이놓아주세요.

-41-

변수 블록 만들기

이제키를눌러서숫자를증가및감소시켜보세요.

실행해봅시다 - 키보드로 숫자변수 증감시키기

-42-

유한(조건) 반복 블록 사용하기

무한반복과유사하지만, 조건이있기떄문에조건을만족하지못하면반복문밖으로나가버리는차이가있습니다.

다음따라해보기를통해유한반복블록의용도를알아봅시다.

따라해봅시다 - 반복 블록을 사용하여 왕복운동하기

스프라이트를클릭했을때유한반복을사용하여앞으로뒤로왕복운동하는스프라이트를만들어봅시다.

제어블록에서위와같이놓아주세요.

동작으로들어가동작블록을놓아줍니다.

-43-

유한(조건) 반복 블록 사용하기

제어블록에서아래와같이놓아주세요.

대기할수있는기다리기블록을놓아줍니다.

-44-

유한(조건) 반복 블록 사용하기

유한반복블록에넣어준후90도회전과1초기다리기블록을뒤에붙여줍니다.

스프라이트를클릭하여실행시켜보세요.

실행해봅시다 - 반복 블록을 사용하여 왕복운동하기

-45-

조건(IF) 블록 사용하기

조건블록은프로그램에서가장중요한판단을하는기능을가진블록입니다. 추후지능로봇이나판단하는프로그램을위해필요합니다.

다음따라해보기를통해조건블록을익혀보십시요.

따라해봅시다 - 스프라이트 크기 증가 후 돌아오기

스프라이트를클릭했을때마다스프라이트의크기가조금씩커지도록스크립트를작성해봅시다. 만약점점커지다가크기가2배가넘게되면원상태로줄어들어야합니다. (처음스프라이트를 로드한경우의크기는100% 입니다.)

제어블록에서위와같이놓아주세요.

-46-

조건(IF) 블록 사용하기

만약,아니면이라는조건블록을붙여넣습니다.

연산으로들어가해당부등호연산을넣어줍니다.

-47-

조건(IF) 블록 사용하기

형태로들어가서아래의블록을넣어주세요.

도움말: 크기가200%(두배) 이상넘는것을막기위해서 연산카테고리의부등호블록을사용하였습니다. 현재스프라이트의크기를알려주는‘크기’리포터블록은형태카테고리에서발견할수있습니다. 스크립트를보면스프라이트를클릭할때마다10%씩커짐을알수있습니다.

따라해봅시다 - 스프라이트 크기 증가 후 돌아오기

이제화살표를눌러화살표의크기를키워보세요.

-48-

연산 블록(부등호와 반올림) 사용하기

스프라이트를클릭했을때마다스프라이트의크기가조금씩커지는범위를부등호에서바꿔보고 반올림블록에대하여알아봅시다.

따라해봅시다 - 부등호의 범위 지정 및 반올림 사용

반올림은안에숫자가소수점일때 반올림해주는기능의블록을 말합니다.

부등호옆의숫자크기에따라스프라이트의 크기가점점늘어나는것을알수있습니다.

-49-

실습해 봅시다

1. 변수블록을이용한말풍선컨트롤: 변수카테고리에서sum이라는변수를만듭니다. 키보드의‘w‘ 키를누르면sum이1씩증가하고‘s’키를누르면1씩감소하게해봅시다. 이때변수값은스프라이트의말풍선으로표시해주세요.

2. 키보드로조건반복회전시키기: 프로젝트메뉴의‘모양’을클릭해서twinArrow.png 를스프라이트로사용합니다. 이스프라이트를왼쪽화살표키를눌렀을때에는왼쪽으로서서히90도만큼회전시키고오른쪽화살표키를눌렀을때에는오른쪽으로서서히90도회전할수있도록합시다.

도움말: 예제에서는 5도씩 회전하므로 18번 반복해서 90도 만큼 회전하였습니다. 반복 횟수와 회전 각도를 조절하면 좀 더 빠르게 돌거나느리게돌게할수있을것입니다.

도움말: 값에 대한 정확한 모니터링(monitoring)은 스테이지의 변수값 컨트롤 보다 말 풍선으로 확인하는 것이 좋습니다. 값을 줄일 때에는–부호를붙여야합니다.

twinArrow.png

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-50-

실습해 봅시다

3. 변수를이용한스프라이트의크기변경: 스프라이트를클릭했을때마다스프라이트의크기가조금씩커지도록스크립트를작성해봅시다. 만약점점커지다가크기가2배가넘게되면원상태로줄어들어야합니다. (처음스프라이트를로드한경우의크기는100% 입니다.)

4. 움직이는공멈추게하기: 공모양의스프라이트가스테이지이곳저곳을빠르게왔다갔다합니다. 이때마우스포인터로빠르게움직이는공을잡을수있도록합니다. 마우스포인터와공모양의스프라이트가만나면잠시멈추게함으로공을잡은효과를낼수있도록합니다.

도움말: 조건블록에 관찰 카테고리의 ‘~ 에 닿았는가’블록을 결합하였습니다.마우스포인터와스프라이트가 만났다면 1초동안 공의움직임을멈추게해줍니다.

도움말: 크기가 200%(두배) 이상 넘는 것을 막기 위해서 연산 카테고리의 부등호블록을 사용하였습니다. 현재 스프라이트의 크기를 알려주는 ‘크기’ 리포터 블록은형태 카테고리에서 발견할 수 있습니다.스크립트를 보면 스프라이트를 클릭할 때마다 10%씩커짐을알수있습니다.

greenball.png

-51-

실습해 봅시다

5. 좌표값나타나게하기: 마우스로스테이지이곳저곳을클릭하면X좌표와Y좌표값이스테이지변수컨트롤에나타나게하여봅시다.

도움말: 스테이지 좌표 값을 얻기 위해서는 먼저 X와 Y좌표 값을 저장할변수를만들어줍니다.이후다음과같은단계가필요합니다.1)이변수값들을 0으로초기화합니다.2)조건문에 ‘마우스를 클릭했는가?’블록을 결합하여 마우스를 클릭했는지를검사하고3)클릭이되었으면마우스의좌표값을변수에넣어줍니다.이 때 마우스의 좌표 값은 소수점 자리까지 계산되어 나오므로 연산카테고리의반올림블록을이용하여정수로나타내주었습니다.

1

2

3

-52-

연습문제

1. 아래리포터블록들은어떤특정한값들을변수에저장해주는역할을합니다.블록들마다어떤값을저장하고있는지조사하여보고 이값들을 정수형으로표현하고자할때반올림블록에결합할필요가없는블록은어떤것들이있는지확인해보세요.

2. 스프라이트가마우스포인터를따라이동하도록스크립트를작성합니다. 이때마우스를클릭하면스프라이트가50%정도부풀어오르고그렇지않은경우에는원상태로돌아오도록합니다. 마우스포인터가스테이지의범위를넘어가면스프라이트는스테이지의벽근처에머물러있고더이상따라가거나사라져서는안됩니다.

리포터블록종류 값의의미 반올림블록필요유무

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-53-

연습문제

3. 각각두개의스프라이트를만든후twinArrow.png와twinArrow2.png파일을사용하여옆그림과같이스프라이트를배치해줍니다. 파란색화살표는첫번째스프라이트이고주황색화살표는두번째스프라이트입니다.

스페이스키를한번누를때마다 파란색화살표가360도회전하고나면주황색화살표가6도씩회전하여시계의분침과초침역할을하게스크립트를작성합시다.

4. 스테이지안에서스프라이트가제자리에서회전을합니다. 회전방향은동일합니다. 키보드의왼쪽방향키를누르면회전속도가느려지고오른쪽방향키를누르면회전속도가빨라지도록해봅시다. 햇블록대신조건블록을사용하도록하며회전각도의크기로속도를조절할경우각도값이0보다작아지지않도록유의합니다.

-54-

연습문제

5. 키보드의방향키를사용하여스프라이트를스테이지내에서위아래와왼쪽오른쪽으로자유롭게조종할수있도록합시다. 햇블록은사용할수없으며조건문을사용하여스크립트를작성해야합니다. 스크립트를실행하고난후에햇블록을사용했을때와조건문을사용했을때어떤차이가있는지이야기해봅시다.

-55-

1장로킷블록사용하기

04그림그리기와스프라이트조종하기

-56-

펜 블록 사용하기

펜블록은선이나도형등의그래픽을그릴수있는열한개의코드블록으로구성되어있습니다. Rokitbrick 프로그램에서그림을그릴때는그림판을이용하거나펜블록을이용하는두가지방법이있습니다. 그림판에서그린그림및그래픽은스프라이트나배경그림을그릴때사용하지만, 펜블록을이용한그림은무대에서스프라이트가그림을그리게하는방법입니다.

펜으로 그린 그림, 스탬프지우기

그림을 그리기 위해 펜 내리기 지정하기(그리기 허용)

스프라이트 이미지를 그리거나 찍기 (복사하여 붙이기)

펜으로 그림을 그리지 않기위해 펜 올리기 지정하기

그림을 그릴 때 사용하는색상 선택하기

펜의 색을 입력한 수만큼바꾸기

펜의 색을 입력한 수로정하기

펜의 음영(명암)을 입력한수만큼 정하기

펜의 음영(명암)을 입력한수만큼 바꾸기

펜의 굵기를 입력한수만큼 바꾸기

펜의 굵기를 입력한수만큼 정하기

-57-

펜의 색과 두께 정하기

펜색깔정하기블록에서 부분을클릭하면나타나는무지개색의색상팔레트에마우스포인트를이동하여색을선택할수있습니다.

스크립트를만들어무대위에서스프라이트가선을그리며이동하는지확인해봅시다.

클릭

펜 색깔을 선택 합니다.

펜 색깔을 지정한 수만큼 바꿉니다.

펜 색깔을 지정한 수의 값으로 정합니다.

펜의색상정하기

-58-

펜의 색과 두께 정하기

펜의 굵기를 5와 10, 30으로 지정하였을 때의 크기를 나타낸 예입니다.

펜의두께정하기

안에 지정한 수만큼 펜의 굵기를 바꿉니다.

안에 지정한 수로 펜의 굵기를 정합니다.

-59-

관찰블록 사용하여 스프라이트 충돌 판단하기

실제 애니메이션에서 사물의 충돌이나 여러가지 상황에서 시점을 확인할때 유용한 블록이 관찰블록입니다.

-60-

관찰 블록 사용하여 색 감지 하기

자신이 정의한 색깔이 스크립트에서 작용하도록 색을 감지할수있습니다. 마우스 커서를 각 색깔 공에 가져다 놓으면 스크립트의 색깔을 감지하게 됩니다.

< 라임 색 공 클릭시 >

< 빨간 색 공 클릭시 >

< 화살표 클릭시 >

-61-

스테이지 그림 가져오기자신이 원하는 배경을 무대에 두고 실제 환경처럼 활용할 수 있습니다.

Stage를 클릭 합니다.

파일을 클릭 합니다.

Backgrounds를클릭 합니다.

Bedroom1을 클릭합니다.

무대에 배경 이미지가 나타납니다.

-62-

실습해 봅시다

1. 스프라이트펜으로네모그려보기: 펜카테고리에있는블록을사용하여 스프라이트의펜을내려서네모를그려봅시다. 선의색이스테이지의바탕색(하얀색)과같으면잘보이지않을수있으니바탕과잘구분될수있는색을사용합시다.

2. 마우스포인터따라선그리기: 마우스포인터가스테이지에서움직이면마우스포인터에따라선이그려질수있도록스크립트를작성해봅시다.

도움말: 왼쪽과 오른쪽 스크립트 모두 네모를 그릴 수 있지만 오른쪽처럼 반복문을사용하여작성하는것이 좋습니다.먼저 펜을내려야만선이그려질수있음을잊지마세요!

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-63-

실습해 봅시다

3. 스프라이트튕겨보기: 스프라이트만들기버튼을눌러스프라이트를한개더추가합니다. 아래그림처럼스프라이트를구성합니다. 첫번째스프라이트는공모양이고두번째는캐릭터형태입니다. 두번째스프라이트는이름을첫번째와구분하기위해서이름을바꾸어줍니다. 공모양의스프라이트는스테이지를자유롭게움직이지만스테이지의벽너머로나가서는안되며두번째스프라이트에부딪칠때에는반사되어다른곳으로튀어나가야합니다. 이동작을계속할수있도록스크립트를작성해봅니다.

도움말: 첫번째스프라이트만스크립트를넣습니다.두번째스프라이트는그냥멈추어있기만하면되므로따로스프라이트를작성하지않아도됩니다.관찰카테고리에서스프라이트가서로충돌하는지여부를알려주는‘~에닿았는가’블록을사용하여스프라이트끼리충돌이일어났는지검사합니다.이때블록에있는팝업목록에서스프라이트이름을선택해서넣어줍니다.

첫 번째 스프라이트 두 번째 스프라이트 이름 바꾸기(스프라이트 -> roi)

-64-

실습해 봅시다

4. 마우스포인터로롤오버말풍선만들기: 무대버튼을클릭하고아래와같은배경그림(bedroom2.gif)을가져옵니다. 스프라이트는마우스포인터처럼마우스의움직임에따라스테이지이곳저곳을이동합니다. 이때스프라이트가배경에있는물체에머무르면말풍선으로아래와같은메시지들이나타나도록스크립트를작성해봅시다.

도움말: 실제 그림에 있는 물체를 식별하는 것이 아니라 그림에 있는 물체들의색이 무엇인지 판단해서 메시지를 띄웁니다. 따라서 다른 물체들이라 할지라도색이같다면같은메시지가나타날수있습니다.

This is window

This is furniture

This is bed

This is floor

-65-

연습문제

1. 옆의 그림에서 처럼 마우스의 움직임에 따라 선이 그려지는 스크립트를작성하여 봅시다. 마우스가 여기저기움직이면 중심으로부터 마우스 좌표까지 계속해서 선이 그려지도록 합니다.

2. 테니스게임- 스프라이트만들기버튼을 눌러서3개의스프라이트를만든후첫번째스프라이트부터 각각아래그림파일들을로드합니다. 검은선모양의스프라이트는스테이지화면맨아래에위치하고 공을막아내는블로커(blocker) 스프라이트는마우스의움직임을따라스테이지하단에서좌우로움직입니다.

또한검은선모양의스프라이트는스테이지하단에위치하며공이이선을만나면게임이끝나게됩니다. 공은벽이나블로커를만나면 튕기게합시다.

redball.png blackbar.pngblocker.png

.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-66-

연습문제

3.색깔건반 – 스프라이트만들기버튼을클릭하여2개의스프라이트를만든후둘중하나의스프라이트에는 다양한색의사각형들이그려져있는옆의파일을로드합니다. 이후마우스포인터를 이 사각형들에 갖다 댄 후 마우스를클릭하면각색깔마다다른음을연주할수있도록합시다.

4. 한붓그리기–키보드의화살표키를사용하여스프라이트를이동시키면스프라이트가움직인경로를따라선이그려지도록스크립트를작성해봅시다. 이때스프라이트는아래그림처럼삼각형모양의화살표를사용하도록하고이화살표의방향은화살표키의방향과일치할수있도록합시다.

colors.png

angle.png

-67-

2장로킷시뮬레이터

01인벤터보드시뮬레이션

-68-

인벤터 보드 시뮬레이션

ROKIT Simulator

인벤터 보드와 PC간의 다양한 콘텐츠를 통해 로봇, 드론, 게임등을 USER가 원하는대로 제어하고 SW를 이해할 수 재미있게이해할수 있는 SW프로그램입니다.

★ 양 옆 아날로그 IR센서 사용 ★ 양 옆 아날로그 IR센서 사용 ★ 뒷면 디지털 IR센서 사용

★ 뒷면 IR 중앙 3개 중심

★ 양 옆 아날로그 IR센서로 방향 결정

★ 로봇 청소기 세팅하기

Q. 누가 안 떨어트리고움직이며 오래 견디나 ?

뒷면 중앙 센서 처음 위치로앞쪽 IR센서로 자율비행 훈련

미션

-69-

인벤터 보드 시뮬레이션

ROKIT smart inventor board

인벤터 보드는 IR 센서, 부저, LED, 모터와 통신 제어모듈등이 모두 내장된 응용확장 가능한 HW 입니다. 스크래치, 아두이노, Unity 3D와 접목하여 다양한 기능을 수행해내는 전자장치입니다.

-70-

인벤터 보드 시뮬레이션

< 연결에 필요한 구성품들 >

1. Inventor Board와 컴퓨터를연결합니다.

(Inventor Board UART에 Board Cable 연결)

구성품과인벤터보드의설치

인벤터보드와 PC를 셋팅 및 연결하는 방법을 알아보도록 합시다.

Inventor Board

Downloader

Downloader Cable

USB Cable

-71-

인벤터 보드 시뮬레이션

2. Downloader와 DownloaderCable을 연결 합니다.

3. Downloader와 USB Cable을연결합니다.

4. Inventor Board와 컴퓨터를연결합니다.

(Inventor Board UART에 Board Cable 연결)

PC와하드웨어연결

PC와 인벤터 보드 다음과 같이 통신 케이블로 연결되어야합니다. 연결후 드라이버를 설치 및 확인합니다.

-72-

인벤터 보드 시뮬레이션

데이터모니터링

인벤터 보드에는 수많은 센서와 LED 모듈들이 내장되어있습니다. 이 값을 통해 로봇 제어 보드의 원리와 용도를 정확히이해하고 활용할 수 있게 됩니다.

-73-

인벤터 보드 시뮬레이션

데이터모니터링 : 디지털 IR 센서입력

디지털신호란0또는1과같은연속되지않는두개의숫자로정보를생성하는것을뜻합니다.

보드 뒷면의 7개 디지털 IR 센서

감지시에앞면의 8개의 LED로확인할수있으며밑면가운데센서가앞면의3,4번LED두개와연결되어있는것이특징입니다.

-74-

인벤터 보드 시뮬레이션

데이터모니터링 : 아날로그 IR 센서입력

아날로그신호란끊김없이계속적으로이어지는숫자시스템으로 보통 전자에서는(0~1023)의 값을 갖고, 디지털이 1과0으로만이어져있는것과차이점이있습니다.

IR센서이외에도가변저항이나초음파센서등입력을아날로그로받는것들이모두해당됩니다.IR센서보정값(0–1023)

디지털로사용시1: On/ 0 : Off 경계값미리보기조절바.

마우스로드래그하여원하는경계값을확인할수있습니다.

IR 센서 실제 값

IR 센서 가용범위

IR 센서 보정값(0~1023)

-75-

인벤터 보드 시뮬레이션

데이터모니터링 : LED, 출력

인벤터보드에내장된 LED와추가로외부에연결된출력모듈을제어할수있습니다.

외부 LED및 출력모듈을연결하고 On/Off 제어

7개의 LED On/Off 제어

소리나LED,7-Segment와같은출력모듈을제어가능합니다.

-76-

인벤터 보드 시뮬레이션

데이터모니터링 : DC 모터

DC모터란?바퀴와같이회전하는모터로,속도와방향으로다양한구동이되는모터입니다.

슬라이더바의눈금에따라속도와방향이결정됩니다.

M1(Motor 1)

M2(Motor 2)

CW

stop

CCW

M1

M2

-77-

인벤터 보드와 핀맵

핀맵

핀맵이란제어보드의핀에대한정보를한눈에알아볼수있도록 작성된 그림이나 문서를 말합니다. 이것은 특히 소프트웨어코딩을할때에큰도움이됩니다.

핀맵의필요성

제어보드로소프트웨어코딩을하기위해서는제어보드에대한기초 지식이 필요합니다. 이러한 정보는 방대하고 어렵기 때문에 배우기에 매우 까다롭습니다. 이러한 어려움을 해결하고자,제어보드의정보를알아보기 쉽게표시한핀 맵을만들게되었습니다.

-78-

인벤터 보드와 핀맵

핀맵사용하기

핀맵은다음과같이구성되어있습니다.

핀의 번호

핀의 기능이나 용도

핀의 번호

핀의 기능이나 용도

는 코딩중에 해당하는 핀을 제어해야 하는 경우사용합니다.

11번부터18번까지의핀의경우 를보면

LEDDisplay라는것을알수있듯,각핀의기능을알수있습니다.

이처럼핀맵에적혀있는번호와용도를가지고실제S/W코딩에활용할수있습니다.

-79-

인벤터보드와 아날로그 센서

아날로그값블록의사용(1)

스마트인벤터보드의앞면3개의센서에물체나손을감지하면제어기는감지상태에따라0에서부터1023사이의값으로표현합니다.물체가센서에가까이있으면0에가까운값을출력하고,물체가멀리있으면 1023에가까운값을출력합니다. 이처럼센서의감지상태에따라 제어기가연속적인 값을출력하는 것을아날로그값출력이라합니다.

왼쪽센서 오른쪽센서

가운데센서

아날로그출력이가능한핀은19번부터26번까지이며,보드전방의세개센서는아래그림처럼19번부터21번핀에연결되어있습니다.

-80-

로킷 브릭 : 아날로그 값 블록

아날로그값블록의사용(2)

아래와같이아날로그값블록의핀값을20번으로한후단순히블록을 클릭해 주면 말풍선으로 센서값이 출력됩니다. (제어기와로킷브릭이먼저연결되어있어야합니다)

또한 아래와 같이 스크립팅하는 방법도 있습니다. 변수를 만든후아날로그 값을저장한다음 말하기 블록을 사용하여변숫값을나타내줍니다. 이렇게하면계속해서센서의값이스프라이트말풍선으로출력됩니다.

-81-

실습해 봅시다

1. 센서감지시켜보기: 스마트인벤터보드앞부분에있는가운데센서(20번) 값을계속해서스프라이트의말풍선으로나타날수있도록스크립트를작성합니다. 작성한스크립트를실행한후이센서에손이나물체를감지시켜봅시다.

2. 스테이지에센서값표시하기: 스마트인벤터보드앞부분에있는센서3개값을스테이지에표시하고3개의센서들에손이나물체를감지시켜봅시다.

도움말 : ‘아날로그 값 읽기’ 블록을 말하기 블록과 결합하여 사용하였습니다. 무한 반복을 해야 계속 현재 값이 보여질 수 있습니다. 이 예제에서는변수블록을사용하지않았다는것에유의하세요.

도움말 : 먼저 3개의 센서값을 저장할 수 있는 변수 3개를 만들어 줍니다. 이 3개의 변수에 무한 반복 블록을 사용하여 계속 센서값들을 읽어들입니다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-82-

실습해 봅시다

3. 센서값으로캐릭터움직이기: 스마트인벤터보드의앞부분가운데센서를손으로감지할때마다스테이지에있는캐릭터가튀어오르게해보세요. 손을떼면다시원래자리로돌아와야합니다.

도움말: 센서값이 100보다 작아지면 스프라이트가 움직이는 것으로하였습니다. 이 값은 주위 환경의 밝기에 따라 달라질 수 있으므로 직접 값을 검사해보는 것이 좋습니다. 센서값을 검사하는 가장 편한 방법으로는 다른 블록과 결합되지 않은 ‘아날로그 값 읽기’ 블록을 클릭해 보는 것입니다. 이렇게 하면 작은 말풍선으로 클릭한 순간의 센서값이표시됩니다.

-83-

연습문제

1. 스마트인벤터보드의 앞부분 가운데 센서를 감지하면미사일이 발사되듯이 스프라이트가 스테이지의 아래쪽에서 위로빠르게올라갈수있도록스크립트를작성해봅시다.

2. 스테이지에캐릭터스프라이트를불러옵니다. 스마트인벤터보드의앞면왼쪽센서를감지하면스프라이트가왼쪽으로이동하고오른쪽센서를감지하면오른쪽으로이동하며가운데센서를감지하면점프하는효과를만들수있도록스크립트를작성해봅시다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-84-

연습문제

3. 스마트인벤터보드의앞쪽에 있는세개의센서중가운데센서값을감지하면스테이지에센서값을막대그래프의 길이로 나타내어주는 스크립트를작성해보세요.

4. 스테이지에아래그림처럼인벤터보드의앞부분에있는3개의센서마다말풍선으로계속센서값이출력되도록합시다(smartInventor.png 사용). 만약변수를사용할경우사용자의혼동이없도록스테이지의변수컨트롤은보이지않게해주세요.

834 792 772

-85-

2장로킷시뮬레이터

02게임시뮬레이션

-86-

게임 시뮬레이션

게임시뮬레이션기능 : 응용컨트롤

인벤터 보드를 이용한 시뮬레이션 게임을 통해 센서와 보드의기능을 자연스럽게 이해할 수 있습니다. 버튼을 클릭하면 아래로풀다운메뉴가나타나며해당컨트롤화면으로이동할수있습니다.

-87-

게임 시뮬레이션

게임시뮬레이션기능 : 공막기

좌우 IR센서를 사용하여 아날로그 방식으로 양쪽벽면을 움직여 공이 나가지 못하게 합니다.

중앙 IR센서를 잠시

막고 있으면 공이 리셋 됩니다.

IR센서를 가리는 거리에 따라

벽의 높이가 달라집니다.

-88-

게임 시뮬레이션

게임시뮬레이션기능 :전투기

좌우 IR센서를 사용하여 디지털 방식으로 비행기를 좌우로 움직여 볼을 파괴합니다. 비행기의 위치는 좌우 5단계의 정해진 트랙으로 이동합니다.

아날로그 센서지만 일정 범위를 기준으로디지털 On/Off 로 작동한다.

-89-

게임 시뮬레이션

게임시뮬레이션기능 : 수리검

하단 중앙 5개의 IR센서(양 끝단 센서는 사용하지않음)를 이용하여 표창을 던진다. 손가락으로 센서들을 순차로 가려주면 각 센서간의 입력시간을속도로 바꾸어 계산한다.

보드를 뒤집어 잡고 빠르지 않은적당한 속도로 수리검을 던지 듯

손가락을 밀어낸다.

-90-

게임 시뮬레이션

게임시뮬레이션기능 : 미로

좌우 IR센서의 조합만으로 로봇을 움직여 미로를탐험합니다. 2의 2제곱으로 총 4개지 상태를 만들어 낼 수 있습니다.

센서를 모두 가리지 않으면 전진

양쪽 두 센서를 모두 가리면 후진

왼쪽 센서를 가리면 좌회전

오른쪽 센서를 가리면 우회전

-91-

게임 시뮬레이션

게임시뮬레이션기능 : 펌프

하단 중앙 5개의 디지털 IR센서(양 끝단 센서는사용하지 않음)를 이용하여 펌프를 움직인다.

손가락으로 센서들을 왕복하며 가려주면 각 센서간의 입력위치에 따라 펌프도 같은 위치로 움직인다.

왼쪽 손가락을 가로로 세워 디지털 센서에 대고오른 손으로 보드를 수직으로 잡고 펌프질 하듯

상하로 움직여준다.

-92-

게임 시뮬레이션

게임시뮬레이션기능 : 드론

보드의 좌우, 중앙 IR 센서와 양쪽 끝 두 개의 디지털 센서를 사용하여 드론을 조종합니다.

보드의 중앙 IR 센서가 바닥을 볼 수 있게 아랫쪽으로 향하도록 보드를 잡고 바닥과의 높이를 변경하여 드론의 상승하강을 조종한다.

중앙의 디지털 센서는 멀리 이동한 드론을 다시 제자리로 돌아오게 하는 역할을한다.

이 상태에서 보드를 좌우로 기울여 양쪽IR 센서가 바닥과의 거리를 인식해 드론이 좌우로 움직일 수 있게 한다.

뒷 면 양쪽 끝 두 개의 디지털 센서는 각각 전진 후진을 담당한다.

-93-

인벤터보드와 디지털 센서(출력)

디지털핀의출력

디지털출력이란한마디로On(켜짐),Off(꺼짐)이렇게두가지신호만으로 표현하는 것을 의미합니다. 스마트 인벤터 보드에서디지털출력을잘보여주는장치는전면8개의LED디스플레이입니다. 아래그림처럼 11번부터 18번까지의핀이 LED 디스플레이를제어하는데사용됩니다.

-94-

로킷 브릭 : 디지털 값 블록(출력)

디지털값블록의사용

디지털블록은핀번호를입력하도록합니다.

설정값에따라해당하는핀의상태가달라집니다.

핀번호입력 사용할 핀 번호를 입력합니다.

참, 거짓설정

해당하는 핀을 켭니다.

해당하는 핀을 끕니다.

지정한 핀에 논리 신호인 참(HIGH)와 거짓(LOW) 신호를 보냅니다. ‘참’ 블록과 ‘거짓’블록은 연산 팔레트에서 얻을 수 있습니다.

11번핀인첫번째LED가켜지거나꺼지는블록의예제입니다.

-95-

실습해 봅시다

1. LED 점멸시키기: 스마트인벤터보드의LED 장치들중11번과18번에동시에불이들어와서1초간격으로깜빡일수있도록스크립트를작성해봅시다.

도움말 : ‘~초 기다리기’블록의 값을 조절하면 깜빡이는 주기가 변화하게됩니다. 시간을변화시켜서다양한주기를만들어봅시다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-96-

실습해 봅시다

2. LED 모두켜기: 스마트인벤터보드의앞부분에있는가운데센서를감지했을때8개의LED가모두켜지게해봅시다. 감지되지않은경우에는8개의LED가전부꺼지게합니다.

도움말 : 조건 블록을 사용해서 센서가 감지되었는지 알아봅니다. <조건>센서값이 100보다 작아지면 LED를 모두 켭니다. 이 때 왼쪽 스크립트처럼 반복문을 사용하면 더 짧은 스크립트로 만들 수 있습니다.단, 디지털 핀의 번호에도 변수를 사용하여 바꿔줘야 하는 것에 유의합니다.

-97-

실습해 봅시다3. LED 켰다끄기: 스마트인벤터보드의8개LED를왼쪽부터0.1초간격을주어차례대로불을켭니다. 8개의LED가전부켜지면, 그즉시모두꺼지고다시처음과같은동작을반복하게하여봅시다.

도움말 : 왼쪽과 오른쪽은 서로 동일한 결과를 만들지만 반복문과 변수를 사용하여 스크립트를 좀 더 짧게 만들 수 있습니다. 왼쪽에 있는스크립트에서는 핀 번호를 직접 입력하지 않고 'led'라는 변수 블록을만들어 디지털 핀 블록에 결합하였습니다. 그리고 이 변수 블록의 값을 1씩증가시켜 LED를제어하였습니다.

-98-

연습문제

1. 스마트인벤터보드의앞부분에있는세개의센서를사용합니다. 왼쪽센서를감지하면가장왼쪽에있는 LED가켜지고가운데센서를감지하면가운데있는두개의LED가켜지며오른쪽센서를감지하면가장오른쪽에있는 LED가켜질수있게해봅시다.

2. LED 에니메이션: 스마트인벤터보드의LED 불빛이왼쪽부터오른쪽으로순서대로켜진후, 다시오른쪽부터왼쪽으로켜지는동작을계속반복할수있게스크립트를작성해보세요.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-99-

연습문제

3.스테이지버튼으로LED제어:스테이지에아래와같은세개의사각형이 있습니다. 사각형들을 마우스로 클릭하면 사각형의색이파랗게변하는동시에스마트인벤터보드의LED가켜졌다가마우스버튼을떼면LED가다시꺼지게해봅시다.맨왼쪽사각형을클릭하면맨왼쪽LED가켜지고가운데사각형을클릭하면가운데두개의 LED가꺼지고오른쪽사각형을클릭하면맨오른쪽LED가켜지게해봅시다.

-100-

연습문제

4. LED로 레벨 표시 : 옆의 그림과같이 스테이지에 슬라이더를 구성합니다. 슬라이더의 구성은 아래와같습니다.

① 가운데 레버는 마우스를 따라 움직입니다. 그러나 레버가 양끝에위치하면 마우스를 따라 움직이지않고멈추어있어야합니다.

② 옆 그림처럼 그림처럼 레버가 오른쪽으로 움직이면 움직인 만큼LED불빛이늘어납니다.다시레버가 왼쪽으로 움직이면 움직인 만큼LED불빛이줄어들게됩니다.

③ 레벨미터에눈금이7개가표시되어있습니다.각눈금과레버가만났을때LED불빛의변화가있습니다.

Control1.png Control2.png Control3.png

마우스의움직임에따라레버와LED가변화할수있게스크립트를작성해봅시다.

-101-

2장로킷시뮬레이터

03로봇구동시뮬레이션

-102-

로봇 시뮬레이션

GUI 프로그래밍기능

로봇이지능적으로움직일수있는논리를프로그래밍할수있는시뮬레이션이가능하며. 실제로봇이없어도로봇에대한기본 개념과 학습이 가능합니다. 버튼을 클릭하면 아래로 풀다운메뉴가 나타나며해당프로그래밍화면으로 이동할수 있습니다.

간단한클릭만으로로봇의움직임을프로그래밍할수있습니다.

-103-

로봇 시뮬레이션

미로탐험로봇 : 어보이더①

장애물감지센서의감지상황에따라해당동작을지정하여로봇이미로를막힘없이누비고다닐수있도록프로그래밍합니다.

전방에 2개이상의물체감지센서를통해물체를감시함과동시에미로의길을지능적으로알아내는기능을손쉽게프로그래밍하고원리를학습할수있습니다.

-104-

로봇 시뮬레이션

미로탐험로봇 : 어보이더②

세개의슬라이더바를조절하여센서의감지거리를변경할수있습니다.

벽감지센서감도조절슬라이더

상황별동작지정버튼

센서의 상황에 따른해당버튼을클릭하면 지정된동작을 변경할수있으며,우측의시작버튼을누르면센서상황에맞는동작을실행합니다..

-105-

로봇 시뮬레이션

라인트레이서①

로봇이 처해있는 교차로 모양과 그에 따른 동작을 순차적으로지정하여원하는곳으로로봇을이동시킵니다.

스마트보드의밑면에있는7개의적외선센서로2cm이내의연속된선을감지하여따라가는로봇을구현한시뮬레이션입니다. 미리입력된프로그래밍을통해구동되는로봇의시스템을알수있습니다.

-106-

로봇 시뮬레이션

라인트레이서②

상황별교차로상태와그에따른동작을각각클릭하여순차적으로 작성합니다. 현재 라인상황과 동작패턴을 잘 생각해서 해보도록합니다. 좌측의실행항목에체크하여실행할셀을활성화시킵니다.

시작버튼을눌러로봇을작동시킵니다.

진행순서프로그래밍셀

-107-

로봇 시뮬레이션

추락방지로봇 : 스모로봇①

낭떠러지감지 센서의 감지 상황에따라해당 동작을 지정하여로봇이 패널 위에서떨어지지 않고자유롭게 움직일 수있도록프로그래밍해야합니다.

바닥에세개의센서를이용하여낭떠러지를감지하고회피하는로봇을뜻합니다.하얀바닥위에서구동하여야하는추락방지로봇의원리는청소기로봇에도그대로적용할수있습니다.

-108-

로봇 시뮬레이션

추락방지로봇 : 스모로봇②

센서의 상황에 따른해당버튼을클릭하면 지정된동작을 변경할수있습니다.각버튼의좌측의슬라이더를사용하여해당동작의지속시간을변경할수있습니다. (0-1.0초)우측의시작버튼을누르면센서상황에맞는동작을실행합니다.

항상기본설정을모두마친다음,시작버튼을눌러로봇을작동시키고, 동작을멈춘후에설정을바꿀수있습니다.

상황별동작지정버튼

-109-

인벤터보드와 디지털 센서(입력)

디지털핀의입력

디지털 입력이란 제어기에 연결된 어떤 장치나 센서의 상태를오직On(켜짐), Off(꺼짐)두가지값으로만표현하여입력되는것을의미합니다. 어떤장치나센서의상태가 0에서부터 1023까지의숫자의값으로표현되는 아날로그 입력값과는달리 오직 켜짐과꺼짐,0과1,혹은참과거짓으로만표현됩니다.

스마트인벤터보드에서디지털핀입력을가장잘보여줄수있는장치는보드뒷면의7조센서와보드전면에부착된3개의딥스위치(dipswitch)입니다.

Bottom Side

딥스위치

7조 센서

로킷브릭에서접근할수있는디지털핀은딥스위치와연결된8번~ 10번핀, 그리고7조센서와연결된11번~ 18번핀등입니다. 이핀들은모두각각핀에연결된장치들의상태를‘참’혹은‘거짓’으로알려줍니다.

-110-

로킷 브릭 : 디지털 값 블록(입력)

디지털값블록의사용

디지털핀의상태를알기위해서는로킷카테고리에서아래와같은블록을사용합니다.블록에서알고싶은핀번호를선택한후블록을클릭만하더라도말풍선으로핀의상태를알려줍니다.

위와같이스크립트하면계속해서지정한핀값의상태를스프라이트의말풍선으로알려줍니다.

딥스위치값읽어오기 (1)

딥스위치의1번은8번핀, 2번은9번핀, 3번은10번핀과연결되어있습니다. 만약3번스위치를올리면 10번핀의상태는‘On’이되고이때디지털값읽기블록을사용하면‘참’으로핀의값이표현됩니다.반대로스위치를내리면핀의상태는‘Off’가되고핀의값은‘거짓’으로표현됩니다.

-111-

로킷 브릭 : 디지털 값 블록(입력)

또한아래와같이스크립트를작성하면 3개딥스위치의변경되는값을스테이지에서계속확인할수있습니다.

7조센서값읽어오기(디지털핀읽기블록을사용하기)

7조센서값을읽는방법은두가지가있습니다.첫번째방법은딥스위치처럼‘디지털값읽기’블록을사용하여7조센서를이루는각센서의상태를읽어오는것이며, 두번째방법은 7조센서값읽기블록을사용하여7개의센서값을한번에읽어오는방식입니다.아래그림처럼12번핀센서를감지한상태에서디지털값읽기블록을실행하면‘참’으로핀의상태를알려줍니다. 감지되지않은상태에서는디지털값읽기블록은핀의상태를‘거짓’으로알려줍니다.

Bottom Side

-112-

2진수와 10진수 (1)

7조센서값전체를한번에읽어야할때편리하게사용할수있습니다.다만이블록은7조센서값을8자리2진수로계산한후에다시10진수로변환된값을알려주기때문에2진수에대한지식이필요합니다.

2진수는 0과 1로만나타낸수입니다. 어떤숫자의값이 1보다큰경우에는자리올림을합니다. 예를들어 2를 2진수로표현하면10이되며3을2진수로표현하면11이됩니다.만약1100111과같은큰자릿수의2진수인경우에는아래와같이계산하면편리합니다.

7조센서값을읽는방법은두가지가있습니다.첫번째방법은딥스위치처럼‘디지털값읽기’블록을사용하여7조센서를이루는각센서의상태를읽어오는것이며, 두번째방법은 7조센서값읽기블록을사용하여7개의센서값을한번에읽어오는방식입니다.아래그림처럼12번핀센서를감지한상태에서디지털값읽기블록을실행하면‘참’으로핀의상태를알려줍니다. 감지되지않은상태에서는디지털값읽기블록은핀의상태를‘거짓’으로알려줍니다.

-113-

2진수와 10진수 (2)

7조센서중가운데센서만감지된경우는14번과15번핀이동시에 1(참)로상태가변화합니다. 14번과 15번두개의핀이가운데에위치한하나의센서에연결되어있기때문입니다. 따라서가운데센서가감지되었을때의값은아래와같습니다.

7조센서중가운데센서와13번,12번,11번센서가감지된경우를이진수로 나타내면 11111이며 아래와 같이 십진수로 계산하면31이됩니다.

-114-

7조 센서 값 읽기(7조 센서값 읽기 블록 사용)

7조센서에물체나손을감지시킨후7조센서값읽기블록을클릭하여값을알아봅시다.

Bottom Side

Bottom Side

Bottom Side

모두 감지한 경우 :

18번만

감지한 경우 :

18번과 11번을

감지한 경우 :

-115-

실습해 봅시다

1. 딥스위치로말풍선나오게하기: 딥스위치3번을올리면스프라이트의말풍선에‘Switch On!’이라는메시지가나오고딥스위치를내리면‘Switch Off’ 라는메시지가나오게스크립트를작성해봅시다.

도움말 :딥스위치3번에 해당하는핀번호는 10번입니다. 10번 값이’거짓’ 이면 스위치가 아래로 내려간 상태이고 반대로 ‘참’이면 스위치가위로올라간상태입니다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-116-

실습해 봅시다

2. 딥스위치로LED 키고끄기: 딥스위치1번을올리면아래그림과같이맨왼쪽(11번) LED가켜지고스위치를내리면LED가꺼지게해봅시다. 마찬가지로딥스위치2번을올리거나내리면가운데LED(14, 15번) 2개가켜지거나꺼지고딥스위치3번을올리거나내리면맨오른쪽(18번) LED가켜지거나꺼지도록스크립트를작성해봅시다.

도움말 : 스위치의상태는 계속고정되므로 스위치를 위로 올릴 경우 디지털 값은 ‘거짓’이 되고 조건 블록의‘만약’ 아래의 스크립트 부분이 실행됩니다.딥스위치를 아래로 내리면 디지털값 읽기 블록의 값은 ‘참’이 됩니다.따라서 ‘만약 ~ 라면’ 블록에서 ‘하단의 아니면’ 아래에 연결된 블록들이실행됩니다.

-117-

실습해 봅시다

3. 부저연주하기: 7조센서값을이용하여18번핀에연결된센서가감지되면‘도’음이연주되고, 17번핀에연결된센서가감지되면‘레’음이연주되게해봅시다. 이렇게각센서가감지될때마다각각의음이연주될수있는스크립트를작성해보세요.

도움말 : 아무것도 감지되지 않은 상태에서 7조센서의 값은 0 입니다. 스마트 인벤터 보드를 뒤집은 상태에서 가장 왼쪽만을 감지했을 때는 7조 센서의 값이 2̂ 7 = 128이 됩니다. 왼쪽에서두 번째 센서의 값을 감지했을 때는 2̂ 6 = 64가되는것입니다.여기서 가운데 센서는 하나만을 감지하더라도마치 두 개의 센서가 감지된 것처럼 2̂ 4(16) +2̂ 3(8) = 24의 값이 출력된다는 점을 유의하기바랍니다.이것은 8개의핀을 7개의센서에연결해서 사용하도록 설계되어 있어 가운데 센서가2개의핀을차지하기때문입니다.

도: 2̂ 7=128레: 2̂ 6 =64미: 2̂ 5 =32파: 2̂ 4+ 2̂ 3=24솔: 2̂ 2=4라: 2̂ 1=2시: 2̂ 0=1

도 솔미 파레 라 시

Bottom Side

-118-

실습해 봅시다

4. 스프라이트전진시키기: 옆그림과같은레이싱카모양의스프라이트가있습니다(racingcar.png를가져오기). 7조센서의왼쪽센서(11번)를감지시키면왼쪽으로회전하고오른쪽센서(18번)를감지시키면오른쪽으로회전합니다. 또한11번과18번을동시에감지시키면스프라이트가전진할수있도록 스크립트를작성해봅시다.

도움말 : 이 예제에서는 센서를 동시에 두개 이상 감지시키는 경우, 어떻게 처리할 것인지 잘 보여줍니다. 맨 왼쪽 센서의 7조 센서값은 128이고맨 오른쪽 센서의 7조 센서값은 1이므로 두 개를 동시에 감지시키면128+1 즉, 129가 7조 센서값이 됩니다. 이러한 원리로 7조 센서 중 동시에여러개의센서를감지시키는경우를구별할수있습니다.

-119-

연습문제

1.오른쪽그림과같이스테이지에1번부터3번까지숫자가적혀있습니다. 각숫자는별개의스프라이트로이루어져있습니다.여기에서특정숫자의딥스위치를 올리면스테이지위에서해당하는숫자의색상이바뀌도록해봅시다.그리고스위치를내리면원래의색상으로돌아올수있도록합니다.

2. 아래그림처럼스마트인벤터보드의7조센서를폭이약2cm 정도인검은선에감지시키며좌우로움직입니다. 이때스테이지에나타난검은선역시7조센서가선을감지하는상태에따라좌우로움직일수있도록하여봅시다. 예를들어12번센서가선을감지하였다면스테이지에 있는선도가운데를기준으로해서12번센서의위치만큼왼쪽으로이동할수있도록합니다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-120-

연습문제

3.스마트인벤터보드의7조센서중11번과12번그리고17번과18번을사용하여타이밍게임을만들어봅시다. 스테이지의스프라이트가특정번호를부르면7조센서중그번호에맞는센서를 빨리 감지시키는 게임입니다. 만약 1초 내에 감지시키지못하면실패했다는메시지가뜨도록합시다.

Bottom Side

스테이지의 스프라이트

-121-

2장로킷시뮬레이터

04로봇의기초와로봇시뮬레이터

-122-

로봇의 기초

로봇이란?

체코어 “Robota(일한다)”는 단어에서 나왔으며, 사람을 대신해기능을 수행하는 기계를 말하며, 최근에는 사람에게 즐거움을주는 로봇들도 지칭합니다.

로봇교육

어린이부터 청소년, 성인에게까지도 친근하고 호기심이 있는과학분야인 로봇에 대해 쉽게 다가서고 전자, 기계, 컴퓨터 등을 통해 로봇을 제어할 수 있을 뿐만 아니라, 소프트웨어 코딩교육을 통해 구현되는 로봇 교육을 포함 합니다.

로봇교육(Software Coding Education)의효과

로봇기술은 미래의 첨단 산업기술의 기초이자 , 첨단 과학이므로,앞으로 어린이들에게 필요한 교육이며, 로봇제작을 통해 (문제 해결을 위한) 사고력, (무에서 유를 만드는) 창의력, (자신만의 것으로 활용가능한) 응용력 을 얻을 수 있습니다.

-123-

로봇의 기초

왜로봇을만들까?

로봇은 인간의 모든 부분에 있어서 편리와 삶을 윤택 하게 만들어 줍니다.

-124-

로봇의 기초

로봇의구조

인간처럼 몸과 두뇌, 감각등을 지니고 있습니다.

로봇의종류

크게 움직임에 따라 분류 합니다.

-125-

로봇 시뮬레이터

고급컨트롤

본인이직접환경을만들고인벤터보드와의구동방식을설정해보는로봇시뮬레이션환경입니다.자신만의시뮬레이터환경을만들어봅시다.

내가만드는시뮬레이션과로봇제어환경

-126-

로봇의 제어

DC모터와인벤터보드의연결

빨간색사각형으로표시된부분이DC모터가연결되는핀입니다.DC모터의선을이부분에연결합니다.스마트인벤터보드는2개의DC모터를제어할수있으며따라서핀역시M1과M2두부분으로이루어져있습니다.DC모터선을연결할때에는+방향에빨간색선이오도록하면됩니다.M3는M1과동일한연결핀으로서독립적으로제어되는것이아니라M1의모터속도와방향을그대로따릅니다. M4역시도M2와동일한연결핀으로서M2와동일하게움직입니다.

로봇은 모터의 힘으로 구동되고 이 로봇을 제어하기 위해서는모터를제어해야합니다.DC모터와인벤터보드를연결해프로그래밍해봅시다.

-127-

-M1핀과M2핀에연결된두개의DC모터를속도50,각자다른방향으로움직입니다.1초동안움직임을유지하다가동시에두모터가멈추게합니다.

로봇의 제어 - DC모터블록사용하기

DC모터블록의첫번째탭은모터번호,두번째는모터의속도,마지막 탭은 모터의 동작을 결정합니다. 아래는 이미지는 여러가지DC모터블록의사용법을알려줍니다.

- M2핀에연결된 DC모터를속도 70,방향은역회전(시계반대방향)으로움직입니다.

- M2핀에연결된 DC모터를속도 70,방향은역회전(시계반대방향)으로움직입니다.

-128-

실습해 봅시다

1. DC모터구동하기: DC모터를M1핀에연결합니다. 스페이스키를누르면1초동안은시계방향(정회전)으로, 그리고다음1초동안은시계반대방향(역회전)으로회전한후모터가정지되도록해봅시다.

도움말 : DC모터는 멈춤 블록으로 명령을 내려야만 멈추게 됩니다. 별도의 멈춤 명령이 없다면 스크립트 실행이 멈추었을 때, 심지어 보드와의 통신이 끊어진 경우에도 모터는 움직입니다. 이럴 경우에는 보드의 리셋 버튼을 누르면모터가멈춥니다.

2. DC모터구동하기: DC모터를두개준비하여하나는M1핀에, 다른하나는M2에연결합니다. 스크립트를클릭하면두개의모터모두1초동안은시계방향으로회전하며, 다음1초동안은시계반대방향으로회전한후멈출수있도록스크립트를작성해봅시다.

도움말 : 멈춤 명령을 내린 경우 DC모터의 속도나 방향 설정은 중요하지 않습니다. 속도나 방향 설정과는 무관하게 멈춤이나풀림은동일한효과를가져옵니다.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-129-

실습해 봅시다

3. DC모터구동하기: DC모터2개를M1핀과M2핀에각각연결합니다. 스마트인벤터보드의앞쪽세개의센서중왼쪽센서를감지하면M1핀에연결된모터가회전하고, 오른쪽센서를감지하면M2핀에연결된모터가회전하게해봅니다. 두센서를동시에감지하면두개의모터가함께회전하여야합니다.

도움말 : ‘만약 ~ 이면’ 블록을 사용하여 두 모터가 독립적으로 움직일 수있도록 하였습니다. 따라서 두 센서를 한꺼번에 감지했을 경우 두 모터가 동시에 움직이려면 두 DC모터는 독립적으로 제어될 수 있어야 합니다.

-130-

연습문제

1.DC모터를M1핀에연결한후,키보드의위쪽화살표키를누르면모터의속도가서서히증가하고아래쪽화살표키를누르면속도가천천히내려갈수있도록스크립트를작성해보세요.

2. 아래그림과같이스프라이트에는슬라이더바가있습니다. 슬라이더바의움직임에따라M1핀에연결된DC모터의속도가변화합니다.

① 슬라이더바의레버는마우스에따라움직이는데, 마우스가양끝으로가게되면더이상따라오지않고제자리에서멈춰있어야하며이때DC모터역시멈춰야합니다.

② 레버가중간에위치할때에도DC모터는멈춰야합니다.

③ 레버가마우스의움직임에따라왼쪽으로움직일때에는모터가시계방향(정회전)으로회전하며속도는레버의움직인양에비례해서빨라져야합니다.

④ 레버가마우스의움직임에따라오른쪽으로움직일때에는모터는시계반대방향(역회전)으로회전하며속도역시레버의움직인양에비례해서빨라져야합니다.

이처럼레버를좌우로조종하여모터의속도의조절하는패널을만들어봅시다.

속도 : 0속도 : 정방향 최대 속도 : 역방향 최대

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트 DOWNLOADS를 확인해주세요.

자세한 내용은 교재 12페이지▶

-131-

연습문제

3. DC모터를M1핀에연결합니다.이후스크립트를실행하면모터의속도와방향을묻는질문과입력창이나옵니다.입력창에입력한속도와방향대로움직일수있도록스크립트를작성해봅시다.

속도는0에서100까지의범위로하며입력받은후에는입력받은것이문자인지숫자인지구분될수있어야합니다.

방향을입력받을때에는네가지(cw,ccw,stop,loose)로입력받도록하고다른문자나숫자를입력받았을때에는무시하도록합니다.

-132-

3장로봇과큐브웍스

01모터의활용

-133-

DC 모터의 활용

DC 모터

모터는 전기를이용하여회전운동을얻어내는대표적인동력장치입니다.

우리가 사용하는 모터의 내부에는 영구자석, 코일과 같은 부품이 들어있으며, 외부에서 들어오는 전기의 방향과 자기장의 방향에따라모터가회전하는방향이결정됩니다.

모터는자석의N극과S극이서로당기고“N극과N극”,“S극과S극”같이같은극끼리는밀어내는원리를이용하여회전합니다.

특히,DC모터는360도회전하므로,바퀴구동형로봇을만들때적합한모터입니다. 2개의모터를사용하여 2륜구동로봇을만들거나4개의모터를사용하여4륜구동로봇을만드는데사용합니다.

-134-

DC 모터의 활용

DC 모터블록사용하기

DC모터블록은다음과같이세가지의값을입력하도록되어있습니다.

모터의동작을정합니다.DC모터는다음과같은동작을합니다.

• 정회전: 모터를시계방향으로회전합니다.

• 역회전: 모터를시계반대방향으로회전합니다.

• 멈춤 :모터를정지시킵니다.(자전거의브레이크를밟듯이정지)

• 풀림 :모터를정지시킵니다.(자전거의페달을놓듯이정지

1. 모터선택 : 어떤모터를 ?

2. 모터속도 : 회전속도는?

3. 모터동작 : 어떤동작을 ?

M2M1

스마트보드는두개의모터를제어할수 있습니다. 두 개의 모터를 각각 M1과 M2 라고 합니다. 움직이고 싶은 모터를 연결하고, 알맞게 선택하도록합니다.

모터의속도를정합니다. 모터의속도는0부터 100까지입니다.숫자가클수록모터의속도가빨라집니다.

-135-

DC 모터의 활용

로킷 브릭의 ‘로킷 스마트’ 탭을 누르면 아래 그림과 같은 블록리스트들이나열됩니다.그중DC모터관련블록을사용할것입니다.

M1에해당하는모터를50의속도로시계방향으로회전하고,1초를기다린후에,멈추고다시1초를기다리는것을반복하는예제입니다.

다음의예제로모터의동작을살펴봅시다.

DC 모터블록사용하기

-136-

DC 모터의 활용

변수는 각각 다음의위치에 해당하는 센서 값을저장하게 됩니다.

DC 모터속도와방향을센서로제어하기

스크립트를작성하기전에먼저센서입력값을저장할3개의변수블록을 미리만들어놓도록합니다.

LEFT CENTER RIGHT

-137-

DC 모터의 활용

보드의적외선센서에감지가되면값이작아지게됩니다. 센서값이 100보다작아지면, M1 모터가정회전을하게됩니다. 반대로,센서가감지가되지않을때는,M1모터가역회전을하게됩니다.

DC 모터속도와방향을센서로제어하기

1.센서로모터방향제어하기

Center센서

센서값이 100보다클때 모터 역회전

센서값이 100보다작을때모터 정회전

-138-

DC 모터의 활용

센서값으로모터의속도를제어합니다.

센서값은0부터1023까지입력이되며, 속도값은0부터100까지입력이가능하므로,센서값과속도값의범위를맞춰주기위해서센서값을10으로나누어서그값을속도에입력합니다.

• LEFT센서가감지되면 M1모터의속도가줄어들게되고,

• RIGHT센서가감지되면M2모터의속도가줄어들게됩니다.

DC 모터속도와방향을센서로제어하기

2.센서로모터속도제어하기

센서 값

속도 값 70

700

50

500

20

200

센서 값 나누기 10

-139-

DC 모터를 사용하는 로봇 만들기

-140-

DC 모터를 사용하는 로봇 만들기

-141-

DC 모터를 사용하는 로봇 만들기

-142-

DC 모터를 사용하는 로봇 만들기

-143-

DC 모터를 사용하는 로봇 만들기

-144-

지능형 로봇 구동하기

내장프로그램사용하기

조립한 로봇의 전원을 켜고 손으로 다양하게 구동해봅시다. 완성된로봇에 입력하는 프로그램모드에 따라 각각다른 로봇으로구동이가능합니다.

프로그램모드는아래와같습니다.

주의

딥스위치가 모두

OFF되어야 합니다.

어보이더

(프로그램 1번 모드)

바닥감지로봇

(프로그램 2번 모드)

라인트레이서

(프로그램 12번 모드)

-145-

지능형 로봇 구동하기_(1)

어보이더구동

장애물을두고로봇이정상적으로회피하는지확인합니다.

어보이더

(프로그램 1번 모드)

-146-

지능형 로봇 구동하기_(2)

바닥감지로봇구동

흰색의 바닥이나책상위에검은색의붙여로봇이움직이는 것을확인합니다

바닥감지로봇

(프로그램 2번 모드)

-147-

지능형 로봇 구동하기_(3)

라인트레이서구동

흰색의 바닥이나책상위에검은색의테이프를 붙여로봇이 라인을따라움직이는지확인합니다.

라인트레이서

(프로그램 12번 모드)

-148-

지능형 로봇 구동하기_(3)

라인트레이서감도조절하기

라인트레이서의작동이시작되면우선감도체크모드로들어갑니다.

이모드에서는 라인트레이서를검은선 위에 올려두면 검은 선이감지되는부분의LED만꺼지게됩니다.만약선에올려놓았을때모든LED가꺼지거나켜진다면감도에문제가있는것으로,가변저항을통해감도조절을하게됩니다.감도조절후에는중앙센서를감지시켜줍니다.

가변저항

-149-

지능형 로봇 구동하기_(3)

라인트레이서프로그래밍하기

감도조절이끝난후프로그래밍모드로들어가게됩니다. 아래설명을 보고 직접 라인을 따라가게 프로그래밍 해봅시다. 입력을 완료했다면, 중앙의 센서를 감지시켜 프로그램을 실행해 봅니다.

교차로에서 왼쪽으로

교차로에서 오른쪽으로

교차로를 지나 앞으로 직진 교차로에서 유턴

한 단계 실행 취소 구동 시작

제시된 순서대로 프로그램을 입력하면 로봇이 어떻게

움직이는지 확인해 봅시다. START

-150-

지능형 로봇의 이해

지능형로봇

어떤로봇을 지능형로봇이라고부를수있을까요?

단순한조립,용접,운반등의노동을수행하는(반)자동화된로봇이아닌,주변환경을스스로인식한후자신의행동을조절하고결정하는로봇을 ‘지능형로봇’이라고부릅니다.

지능형을결정하는요소는인간과비교하여 로봇이가질수 있는 센서와 모듈을 이용하여 프로그램을 어떻게 적용하느냐에결정됩니다.

이제부터여러분이직접지능형로봇의프로그래밍을해봅시다.

-151-

키보드를 활용한 구동

변수만들기

변수 만들기를 사용하여변수를 만들어 줍니다.

모터의회전조건

모터의 기준에서 시계방향으로 돌아가는 것을 정회전

모터의 기준에서 시계반대 방향으로 돌아가는 것을 역회전

M1 M2

이러한 기준으로 모터의 전진, 후진, 좌회전, 우회전을 만들 수 있습니다.

M1 M2

-152-

키보드를 활용한 구동

스크립트만들기

조건1> 위쪽 화살표M1:역회전,M2:정회전전 진

조건2>아래쪽 화살표M1:정회전,M2:역회전후 진

조건3>왼쪽 화살표M1:정회전,M2:정회전좌회전

조건4>오른쪽 화살표M1:역회전, M2:역회전우회전

조건문을 무한반복하기

조건이 아닐 때(키를 안 누를 때)

정지

Speed를 80으로 넣어줌 (숫자크기에 속도변화)

-153-

키보드를 활용한 구동

스크립트만들기

조건1전진

조건2후진

조건3우회전

조건4좌회전

조건이 아닐 때

정지

조건문을 무한반복하기

Speed를 80으로 넣어줌 (숫자크기에 속도변화)

-154-

키보드를 활용한 구동

로봇조종하기

Rokit brick의 무대에서 x축(가로), y축(세로)을 마우스로 클릭하면전,후,좌,우로로봇이구동합니다.

-155-

연습문제

1.순차적으로출발지점부터목표지점까지자동으로도착할수있도록스크립트를작성해보세요

GOAL GOAL

2) 직진후 방향 이동 코스1) 직선 코스

2. Rokit brick의무대에서원의지름을조절하여지름의변화만큼로봇이원을그리는스크립트를작성해보세요.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트

DOWNLOADS를 확인해주세요. 자세한 내용은 교재 12페이지▶

-156-

3장로봇과큐브웍스

02어보이더

-157-

어보이더

어보이더의소개

어보이더는전방에장애물이있으면다른방향으로회전해다시움직이는 로봇입니다. 적외선을 전방으로 쏘아 반사되는 빛의양으로장애물의유무를알아내어장애물을피해갑니다.

어보이더의원리를직접제작하며배워봅시다.

-158-

어보이더 알고리즘

원리

장애물을 피하며 장애물의 반대 방향으로 움직입니다.

-159-

프로그램 설명

변수설명

변수만들기를사용하여5개의변수블록을만들어줍니다.

• sensorL - 왼쪽센서의아날로그값

• sensorM- 중앙센서의아날로그값

• sensorR–오른쪽센서의아날로그값

• speed –모든모터의속도

• limit -기준이되는값

해당변수의아날로그값

만들어진 sensor 변수에는 앞서 배웠던 보드 전방의 IR센서 보정값(0 – 1023)이 들어갑니다.

이러한 값이 들어가려면 각 센서의 해당 핀 번호가 입력되어야만 메인보드로 입력되는 값이 실시간으로 감지되어 변수값으로 전달됩니다.

19핀 20핀 21핀sensorL sensorM sensorR

실시간 아날로그값

-160-

프로그램 설명

변수 선언

반복

아날로그값

조건1

조건2

조건3

조건아니면

변수 speed와 limit는 스크립트가 시작할 때 각각 특정한 값을가져야 합니다. 이것을 초기값이라 합니다. 모터 속도를 제어하는 값인 speed는 초기값이 80입니다. 또한 센서의 감지 여부를 결정하는 값이 들어 있는 변수 limit의 초기값은 200입니다.

앞부분 세 개의 센서값을 읽어서 각각의 변수에 저장합니다. 이 스크립트들이 무한 반복하기 블록 안에 들어있다는 점을 유의해 주세요.

왼쪽 센서 값이 변수 limit 보다 작으면 물체가 감지된 것으로 판단하고 모터를 움직여서 오른쪽으로 회전합니다. 이 때 모터의 회전방향은 둘 다 역회전이어야 오른쪽으로 회전할 수 있습니다.

3개 중 어떤 센서도 감지되지 않은경우에는 로봇은 전진합니다. 두 개의 모터 중 왼쪽(1번) 모터는 역회전, 오른쪽(2번) 모터는 정회전할 때 전진하게 됩니다.

가운데 센서 값이 변수 limit 보다 작으면물체가 감지된 것으로 판단하고 모터를움직여서 0.5초 정도 후진한 후 오른쪽으로 회전합니다. 이렇게 후진한 다음 회전하면 더욱 안정적으로 물체를 피할 수 있습니다.

오른쪽 센서 값이 변수 limit 보다작으면 물체가 감지된 것으로 판단하고 모터를 움직여서 왼쪽으로 회전합니다. 이 때 모터의 회전방향은둘 다 정회전이어야 왼쪽으로 회전합니다.

-161-

연습문제

1. 다음과같이 빛을따라오는 로봇응용스크립트를 작성해보세요.

2. 다음과같은 미로를 탈출하기위한어보이더 응용스크립트를작성해보세요

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트

DOWNLOADS를 확인해주세요. 자세한 내용은 교재 12페이지▶

센서로 입력된 빛을 따라가며 움직입니다.

정지

센서의 입력이 없을 때

(빛이 없을 때)

전진

두 개의 센서에 입력이 들어올 때

(빛이 비출 때)

좌회전

왼쪽 센서에 입력이 들어올 때

(빛이 왼쪽에서 비출 때)

우회전

오른쪽 센서에 입력이 들어올 때

(빛이 오른쪽에서 비출 때)

-162-

3장로봇과큐브웍스

03바닥감지로봇

-163-

바닥 감지 로봇

바닥감지로봇 (스모로봇)의소개

2개의 DC모터를 사용하여앞으로나아가는자율 주행방식의 2륜구동로봇입니다.스마트보드의뒷면에배치한7개의적외선센서로 로봇이 전진하는 동안 바닥의 상태를 감지합니다. 밑면의적외선센서들이바닥이더이상존재하지않는상태를감지하면로봇의몸체를후진하거나옆으로회전하여다른방향으로나아갑니다.이러한동작을반복하여낭떠러지로둘러싸인일정한영영ㄱ을추락하지않고자유롭게주행합니다.

-164-

바닥감지로봇 알고리즘

원리

센서로 입력된 값이 없을 때는 후진 후 방향을 틀어 다른 쪽으로 이동합니다.

-165-

프로그램 설명

변수설명

변수만들기를사용하여한개의변수블록을만들어줍니다.

• speed –모든모터의속도

보드뒷면 7개센서의디지털값

보드 뒷면의 7개의 센서가 디지털방식의 IR 센서 입니다.

디지털 센서란 0 또는 1과 같은 연속되지 않는 두개의 숫자로정보를 생성하는 것을 뜻합니다.

17핀 11핀12핀16핀

14.15핀

13핀18핀

센서 4개 : 11,12,17,18 사용

-166-

프로그램 설명

변수 선언

반복

조건1

조건2

조건이아닐때

변수 speed 에 80 을 저장

조건문을 무한 반복

바닥에 있는 디지털 센서중11,12번 센서가 바닥을 감지안할때 후진

0.5초간 대기

오른쪽으로 회전

바닥에 있는 디지털 센서중17,18번 센서가 바닥을 감지안할때 후진

왼쪽으로 회전

조건아 아닐때 전진

0.5초간 대기

0.5초간 대기

0.5초간 대기

-167-

연습문제

1. 바닥에검은색절연테이프를붙이고물체를모두밖으로내보내는스모형식의로봇응용스크립트를작성해보세요.

2. 다음과같은 미로를 탈출하기위한어보이더 응용스크립트를작성해보세요

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트

DOWNLOADS를 확인해주세요. 자세한 내용은 교재 12페이지▶

-168-

3장로봇과큐브웍스

04라인트레이서

-169-

라인트레이서

라인트레이서의소개

스마트보드의밑면에있는 7개의적외선센서로 2cm이내의연속된 선을 감지하여 따라가는 로봇입니다. 적외선 센서는 검은색과하얀색의차이를가장잘감지하므로라인트레이서가따라가야할선은하얀색바탕에검은색선으로합니다.이선을감지하면서 로봇이 전진하는 중에 로봇의 중심이 선에서 벗어나면좌우모터속도를조절하여원상태로되돌아오도록합니다.

-170-

라인 트레이서 알고리즘

원리

검은색 : 입력이 없음 ( 적외선을 흡수 )

흰 색 : 입력이 들어옴 ( 적외선을 반사 )

-171-

프로그램 설명

변수설명

변수만들기를사용하여3개의변수블록을만들어

줍니다.

• speed –모든모터의속도

• senL-왼쪽 12핀센서가감지되면참.

감지되지않으면거짓.

• senR-오른쪽17핀 센서가감지되면참.

감지되지않으면거짓.

보드뒷면 7개센서의디지털값

보드 뒷면의 7개의 센서가 디지털방식의 IR 센서 입니다.

디지털 센서란 0 또는 1과 같은 연속되지 않는 두개의 숫자로정보를 생성하는 것을 뜻합니다.

17핀 11핀12핀16핀

14.15핀

13핀18핀

센서 2개 : 12, 17 사용

-172-

프로그램 설명

변수 선언

반복

조건1

조건2

조건3

정지

변수 speed 에 50 을 저장

조건문을 무한 반복

바닥에 있는 디지털 센서중12핀이 감지 안되고, 17핀이감지 될때 왼쪽으로 회전

바닥에 있는 디지털 센서중12핀이 감지 되고, 17핀이 감지 안될때 오른쪽 회전

바닥에 있는 디지털 센서중 12핀,17핀 둘다감지 될때 전진

키보드의 스페이스 바를 눌렀을때정지

-173-

연습문제

1.바닥에검은색절연테이프를다음과같이붙이고,두번째교차로지점에서멈추는응용스크립트를작성해보세요.

2. 다음과같은 직각형태의라인을통과하여 첫 번째교차로에서멈추는응용스크립트를작성해보세요.

예제와 연습문제 파일 다운로드는 rokitarduino.org 웹사이트

DOWNLOADS를 확인해주세요. 자세한 내용은 교재 12페이지▶

-174-

-175-

-176-