-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 의 Rokit Brick 예제및연습문제스크립트파일다운로드하기에서통합파일을다운로드받으시면됩니다. rokitarduino.org 로접속 상단 DOWNLOADS 클릭 SW Education kit 의하위메뉴에서통합파일을다운로드 -12-
1 장로킷블록사용하기 01 블록, 스크립트, 스프라이트 -13-
로킷브릭의구성 기본적인모든메뉴와화면구성은스크래치와유사합니다. 비교하여동작해보면보다쉽게빨리적응할수있습니다. 스크래치유저라면어렵지않게바로사용할수있습니다. 블록팔레트 메뉴 탭목록 무대확대 / 축소 시작 / 중지 무대 (Stage) 스크립트창 스프라이트목록 -14-
로킷브릭의구성 메뉴를통해파일을불러오거나쓸수있습니다. 열기, 저장하기는프로그램내부에저장되며, 외부로파일을공유하려면가져오기ㆍ블록내보내기의기능으로.XML 파일형식을이용해공유가능합니다. 또한언어는원하는형식으로선택할수있습니다. -15-
블록, 스크립트, 스트라이프 로킷브릭에는프로그래밍을할때쓰이는기본단위가 있습니다. 블록과스트라이프, 스크립트에대해알아봅시다. 하나하나낱개의단위를 블록 이라합니다. 블록마다고유색상을가지고있어, 색상을기억하고있으면프로그래밍하기가편해집니다. 블록을스크립트창으로드래그해두개이상의블록이합쳐지면 스크립트 라부릅니다. 스프라이트란로킷브릭의핵심개체이며여러스프라이트가모여하나의프로젝트를구성합니다. 모형부터소리까지전반적인역할을주관하게됩니다. -16-
햇 (hat) 블록사용하기 모자처럼생긴햇 (Hat) 블록은명령을 시작하게하는시작블록입니다. 마우스를이용하여왼쪽클릭후드래그하여스크립트영역에원하는위치에놓으면됩니다. 다른블록중하나를똑같은방법으로붙여봅니다. 이렇게모아지면하나의스크립트가됩니다. -17-
동작블록사용하기 실제스프라이트의이미지를움직이게하는블록을동작블록이라하며, 햇블록과함께사용하여야동작이가능합니다. 햇블록과같이동작블록을연결하고어떻게동작하는지실행하여봅시다. -18-
무한반복블록사용하기 무한반복블록은안에들어있는블록들을무한반복시키거나무한반복블록안에있는조건블록을지속적으로사용하게해주는블록입니다. 무한반복블록같이동작블록을연결하고어떻게동작하는지실행하여봅시다. -19-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 실습해봅시다 1. 스프라이트회전시키기 : 아래두가지스크립트는클릭할때마다스프라이트가회전할수있도록해줍니다. 두스크립트를실행해보고어떤차이가있는지확인해보세요. 클릭했을때 블록은스크립트를클릭했을때에만스프라이트가회전합니다. 하지만오른쪽 when I am pressed 블록은스크립트를클릭할때뿐아니라스테이지에있는스프라이트를클릭할때에도스프라이트가회전합니다. 2. 스프라이트회전컨트롤 : 키보드의왼쪽화살표키를누르면스프라이트가왼쪽으로회전하고오른쪽화살표키를누르면오른쪽으로회전할수있도록해봅시다. 도움말 : 회전블록의회전방향에유의하도록합시다! -20-
실습해봅시다 3. 스프라이트이동시키기 : 키보드의왼쪽화살표키를누르면스프라이트가왼쪽으로이동하고오른쪽화살표키를누르면오른쪽으로이동하게해봅시다. 이때스프라이트가이동하다가스테이지의벽을만나면더이상이동하지않고멈추게합시다. 도움말 : 왼쪽으로움직일때에는 값을주어야한다는점에유의하세요. 벽에닿으면튕기기 블록을추가하여벽에닿았을때좌표값이줄거나늘지않도록함으로스프라이트가벽너머로넘어가지않도록하였습니다. 4. 스프라이트추가하기 : 새로운스프라이트추가하기 버튼을눌러두개의스프라이트를스테이지에나타나게해봅시다. 스페이스키를눌렀을때첫번째스프라이트는회전을하고두번째스프라이트는좌우로 ( 혹은아래위로 ) 반복해서움직이게해봅시다. 첫번째스프라이트 두번째스프라이트 도움말 : 한개의스프라이트영역에두개의스크립트를모두작성하지않도록유의합니다. -21-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 1. 옆의그림은동작카테고리에서발견할수있는블록들입니다. 두블록이갖고있는공통점과차이점엔무엇인지조사해보도록합시다. 2. 스프라이트를키보드의화살표키에따라움직일수있게해봅시다. 위쪽화살표를누르면위쪽으로이동하고아래쪽화살표를누르면아래쪽으로이동하며왼쪽화살표를누르면왼쪽으로이동하고오른쪽화살표를누르면오른쪽으로이동하게스크립트를작성해봅시다. 3. 옆의그림처럼 모양 탭을클릭한후붓모양버튼을클릭하여스프라이트편집기에서동그란원을그려서공모양의새로운스프라이트를추가합니다. 그다음이스프라이트가스테이지이곳저곳을다닐수있도록합니다. 벽에닿을때에는반대편방향으로튕겨야합니다. -22-
연습문제 4. 스프라이트를 2 개만들어줍니다. 키보드를아무거나누르면두개의스프라이트가동시에움직이기시작하며자유롭게스테이지이곳저곳을다니게하여봅시다. 첫번째스프라이트의움직임은느리게하고두번째스프라이트의속도는좀더빠르게해줍니다. 두스프라이트모두벽을만나면다른방향으로튕겨서움직여야합니다 5. 정지해있던스프라이트에마우스포인터를갖다대면계속회전할수있도록해봅시다. 이때 관찰 카테고리의 마우스의 X 좌표 블록을사용하여스프라이트에마우스포인터가가까워지면회전하는속도가느려지고멀어질수록빠르게돌게하여봅시다. -23-
1 장로킷블록사용하기 02 스크립트만들기 -24-
소리와모양파일가져오기 소리파일은특정한시점에재생하도록하여스크립트와스프라이트의효과를더할수있습니다. 메뉴 > 파일에서소리를선택합니다. Dog1.wav 소리파일을선택합니다. 클릭하면 Dog1.wav 의소리가재생됩니다. -25-
소리와모양파일가져오기 클릭했을때 햇블록을드래그합니다. 소리내기블록을넣은후빈칸에해당파일은선택합니다. 클릭하여실행해보세요. -26-
소리와모양파일가져오기 모양파일은스프라이트에자신이원하는이미지를불러와서제어할수있도록되어있으며, 자신이직접만들거나원하는파일을불러올수도있습니다. 여기서는제공되는이미지를선택해봅니다. 메뉴에서모양을선택합니다. 모양에서 dog1-a.png 를선택합니다. 무대에 dog1 의이미지 ( 스프라이트 ) 가나타났습니다. -27-
소리와모양파일가져오기 자신이직접만들거나원하는파일을불러올수도있습니다. 이번에는직접자신이원하는이미지를가져오고직접그린것도추가해보도록하겠습니다. 스프라이트의이름도유저가변경가능합니다. 새로운스프라이트추가하기 새로운스프라이트그리기 파일 가져오기 원하는이미지클릭하시면유저가원하는이미지 ( 스프라이트 ) 로변경이가능합니다. 유저가스프라이트를직접그릴수도있습니다. -28-
소리내기블록사용하기 예제의소리파일을가지고와서주인공이낼수있는효과를줄수있습니다. 클릭하면강아지가 멍멍 소리를내며 10 만큼앞으로이동합니다. 직접녹음한소리파일이나원하는음악등의파일을직접가져다가활용할수있습니다. -29-
말풍선블록사용하기 소리에이어서눈으로보일수있도록말풍선이추가되는블록이며특히시간과함께나타났다가사라지게하는자막같은효과를줄수있습니다. 에입력한단어가 2초동안말풍선에나타납니다. 에입력한단어를말풍선에나타납니다. 에입력한단어가 2초동안생각풍선에나타납니다. 에입력한말이생각풍선에나타납니다. 아래의그림은말풍선과생각풍선을사용한예입니다. -30-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 실습해봅시다 1. 스프라이트벽에튕기기 : 세개의스프라이트를만들어줍니다. 각각의스프라이트는스테이지이곳저곳을자유롭게다닐수있도록합니다. 이때 방송하기 블록을사용하여첫번째스프라이트가움직이기시작할때다른스프라이트들도동시에움직임을시작할수있도록해봅시다. 첫번째스프라이트두번째스프라이트세번째스프라이트 2. 키보드로소리제어하기 : 프로젝트메뉴의 소리 목차를클릭하면옆의그림처럼가져올수있는소리목록을볼수있습니다. 여기서 dog1.wav 파일을클릭하여로드한후에키보드의 d 키를누르면이소리파일이재생될수있도록합시다. 도움말 : 소리탭을클릭하여현재로드된소리파일목록에사용자의다른폴더에있는 *.wav 파일을드래그하여소리파일을추가할수있습니다. -31-
실습해봅시다 3. 연주해보기 : 소리 카테고리의음연주블록을사용하여스프라이트를클릭했을때 도레미파솔라시도 연주가시작되도록합시다. 도움말 : 61, 63, 66, 68 음은반음입니다. 따라서이예제에는사용되지않았습니다. 음계의숫자가커질수록음이높아지고작아질수록음이낮아집니다. 4. 키보드로말풍선제어하기 : 키보드의방향키중왼쪽화살표를누르면스프라이트가왼쪽으로이동하면서 LEFT! 라는메시지가담긴말풍선이스프라이트에나타나고오른쪽화살표키를누르면스프라이트가오른쪽으로이동하면서 RIGHT! 라는메시지가담긴말풍선이스프라이트에나타나도록해보세요. -32-
실습해봅시다 5. 회전각도알아보기 : 스크립트를클릭할때마다 10 도씩시계방향으로스프라이트가회전하도록합니다. 이때말풍선으로스프라이트가자신의회전각도를알려주도록스크립트를작성해봅시다 도움말 : 보라색말풍선만들기블록에동작카테고리에있는 방향 리포터블록을결합하였습니다. 이렇게결합시키면말풍선에는스프라이트의회전방향이각도로표시됩니다. 6. 좌표알아보기 : 키보드의왼쪽과오른쪽방향키로스프라이트를왼쪽과오른쪽으로이동시킵니다. 이때스프라이트에말풍선으로스프라이트의 X 좌표값을항상나타낼수있도록스크립트를작성해봅시다. 도움말 : 동작카테고리에있는 X 좌표 블록을말하기블록에결합하였습니다. 스프라이트를이동시키면서말풍선에나타난값을관찰해보면 5 씩증가하거나감소하는것을볼수있습니다. -33-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 1. 소리카테고리에있는음계연주블록을사용해서간단한동요나음악을연주할수있도록스크립트를작성해봅시다. 이때아래블록을이용하여빠르기를조절해연주하여보고, 느리게도연주하여봅시다. 2. 스크립트를클릭하면도레미파솔라시도가계속해서연주됩니다. 이때 q 키를누르면연주속도가느려지고 w 키를누르면원래의연주속도가되고 e 키를누르면연주속도가빨라지게해봅시다. 3. 키보드의방향키로스프라이트를위, 아래, 오른쪽, 왼쪽으로조종하도록스크립트를작성합니다. 이때말풍선으로이동중인스프라이트의좌표를표시합시다. X 좌표 ( 가로 ) 방향으로움직일때에는 X 좌표값이말풍선에표시되고 Y 좌표 ( 세로 ) 방향으로움직일때에는 Y 좌표값이표시되게합시다. -34-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 4. 고양이들의대화 말풍선넣기 : 옆그림처럼스테이지에스프라이트 2 개를놓습니다.(cat2.gif 사용 ) 왼쪽과오른쪽고양이는각각다른스프라이트입니다. 왼쪽의고양이가말을걸면잠시후에오른쪽의고양이가대답을합니다. 제어카테고리에있는 ' 방송하기 ' 블록을이용하여두스프라이트가말을주고받을수있도록합시다. w,a,s,d 키를누르면각각키에따라왼쪽고양이가다른말을하고이말에따라오른쪽고양이도각각다른대답을할수있도록스크립트를만들어봅니다. 5. 고양이들의대화 소리내기 : 고양이들의대화가완성되었다면말풍선이생길때마다고양이울음이나오도록합시다. 프로젝트메뉴의 소리 목차를클릭하여왼쪽스프라이트에는 Kitten.wav 파일을로드하여울음소리로사용하고오른쪽스프라이트에는 Meow.wav 파일을로드하여울음소리로사용합니다. -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-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 실습해봅시다 1. 변수블록을이용한말풍선컨트롤 : 변수카테고리에서 sum 이라는변수를만듭니다. 키보드의 w 키를누르면 sum 이 1 씩증가하고 s 키를누르면 1 씩감소하게해봅시다. 이때변수값은스프라이트의말풍선으로표시해주세요. 도움말 : 값에대한정확한모니터링 (monitoring) 은스테이지의변수값컨트롤보다말풍선으로확인하는것이좋습니다. 값을줄일때에는 부호를붙여야합니다. 2. 키보드로조건반복회전시키기 : 프로젝트메뉴의 모양 을클릭해서 twinarrow.png 를스프라이트로사용합니다. 이스프라이트를왼쪽화살표키를눌렀을때에는왼쪽으로서서히 90 도만큼회전시키고오른쪽화살표키를눌렀을때에는오른쪽으로서서히 90 도회전할수있도록합시다. twinarrow.png 도움말 : 예제에서는 5 도씩회전하므로 18 번반복해서 90 도만큼회전하였습니다. 반복횟수와회전각도를조절하면좀더빠르게돌거나느리게돌게할수있을것입니다. -50-
실습해봅시다 3. 변수를이용한스프라이트의크기변경 : 스프라이트를클릭했을때마다스프라이트의크기가조금씩커지도록스크립트를작성해봅시다. 만약점점커지다가크기가 2 배가넘게되면원상태로줄어들어야합니다. ( 처음스프라이트를로드한경우의크기는 100% 입니다.) 도움말 : 크기가 200%( 두배 ) 이상넘는것을막기위해서연산카테고리의부등호블록을사용하였습니다. 현재스프라이트의크기를알려주는 크기 리포터블록은형태카테고리에서발견할수있습니다. 스크립트를보면스프라이트를클릭할때마다 10% 씩커짐을알수있습니다. 4. 움직이는공멈추게하기 : 공모양의스프라이트가스테이지이곳저곳을빠르게왔다갔다합니다. 이때마우스포인터로빠르게움직이는공을잡을수있도록합니다. 마우스포인터와공모양의스프라이트가만나면잠시멈추게함으로공을잡은효과를낼수있도록합니다. greenball.png 도움말 : 조건블록에관찰카테고리의 ~ 에닿았는가 블록을결합하였습니다. 마우스포인터와스프라이트가만났다면 1 초동안공의움직임을멈추게해줍니다. -51-
실습해봅시다 5. 좌표값나타나게하기 : 마우스로스테이지이곳저곳을클릭하면 X 좌표와 Y 좌표값이스테이지변수컨트롤에나타나게하여봅시다. 1 2 3 도움말 : 스테이지좌표값을얻기위해서는먼저 X 와 Y 좌표값을저장할변수를만들어줍니다. 이후다음과같은단계가필요합니다. 1) 이변수값들을 0 으로초기화합니다. 2) 조건문에 마우스를클릭했는가? 블록을결합하여마우스를클릭했는지를검사하고 3) 클릭이되었으면마우스의좌표값을변수에넣어줍니다. 이때마우스의좌표값은소수점자리까지계산되어나오므로연산카테고리의반올림블록을이용하여정수로나타내주었습니다. -52-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 1. 아래리포터블록들은어떤특정한값들을변수에저장해주는역할을합니다. 블록들마다어떤값을저장하고있는지조사하여보고이값들을정수형으로표현하고자할때반올림블록에결합할필요가없는블록은어떤것들이있는지확인해보세요. 리포터블록종류값의의미반올림블록필요유무 2. 스프라이트가마우스포인터를따라이동하도록스크립트를작성합니다. 이때마우스를클릭하면스프라이트가 50% 정도부풀어오르고그렇지않은경우에는원상태로돌아오도록합니다. 마우스포인터가스테이지의범위를넘어가면스프라이트는스테이지의벽근처에머물러있고더이상따라가거나사라져서는안됩니다. -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-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 실습해봅시다 1. 스프라이트펜으로네모그려보기 : 펜카테고리에있는블록을사용하여스프라이트의펜을내려서네모를그려봅시다. 선의색이스테이지의바탕색 ( 하얀색 ) 과같으면잘보이지않을수있으니바탕과잘구분될수있는색을사용합시다. 도움말 : 왼쪽과오른쪽스크립트모두네모를그릴수있지만오른쪽처럼반복문을사용하여작성하는것이좋습니다. 먼저펜을내려야만선이그려질수있음을잊지마세요! 2. 마우스포인터따라선그리기 : 마우스포인터가스테이지에서움직이면마우스포인터에따라선이그려질수있도록스크립트를작성해봅시다. -63-
실습해봅시다 3. 스프라이트튕겨보기 : 스프라이트만들기버튼을눌러스프라이트를한개더추가합니다. 아래그림처럼스프라이트를구성합니다. 첫번째스프라이트는공모양이고두번째는캐릭터형태입니다. 두번째스프라이트는이름을첫번째와구분하기위해서이름을바꾸어줍니다. 공모양의스프라이트는스테이지를자유롭게움직이지만스테이지의벽너머로나가서는안되며두번째스프라이트에부딪칠때에는반사되어다른곳으로튀어나가야합니다. 이동작을계속할수있도록스크립트를작성해봅니다. 첫번째스프라이트 두번째스프라이트이름바꾸기 ( 스프라이트 -> roi) 도움말 : 첫번째스프라이트만스크립트를넣습니다. 두번째스프라이트는그냥멈추어있기만하면되므로따로스프라이트를작성하지않아도됩니다. 관찰카테고리에서스프라이트가서로충돌하는지여부를알려주는 ~ 에닿았는가 블록을사용하여스프라이트끼리충돌이일어났는지검사합니다. 이때블록에있는팝업목록에서스프라이트이름을선택해서넣어줍니다. -64-
실습해봅시다 4. 마우스포인터로롤오버말풍선만들기 : 무대버튼을클릭하고아래와같은배경그림 (bedroom2.gif) 을가져옵니다. 스프라이트는마우스포인터처럼마우스의움직임에따라스테이지이곳저곳을이동합니다. 이때스프라이트가배경에있는물체에머무르면말풍선으로아래와같은메시지들이나타나도록스크립트를작성해봅시다. This is window This is bed This is furniture This is floor 도움말 : 실제그림에있는물체를식별하는것이아니라그림에있는물체들의색이무엇인지판단해서메시지를띄웁니다. 따라서다른물체들이라할지라도색이같다면같은메시지가나타날수있습니다. -65-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 1. 옆의그림에서처럼마우스의움직임에따라선이그려지는스크립트를작성하여봅시다. 마우스가여기저기움직이면중심으로부터마우스좌표까지계속해서선이그려지도록합니다. 2. 테니스게임 - 스프라이트만들기버튼을눌러서 3 개의스프라이트를만든후첫번째스프라이트부터각각아래그림파일들을로드합니다. 검은선모양의스프라이트는스테이지화면맨아래에위치하고공을막아내는블로커 (blocker) 스프라이트는마우스의움직임을따라스테이지하단에서좌우로움직입니다. 또한검은선모양의스프라이트는스테이지하단에위치하며공이이선을만나면게임이끝나게됩니다. 공은벽이나블로커를만나면튕기게합시다.. redball.png blocker.png blackbar.png -66-
연습문제 3. 색깔건반 스프라이트만들기버튼을클릭하여 2 개의스프라이트를만든후둘중하나의스프라이트에는다양한색의사각형들이그려져있는옆의파일을로드합니다. 이후마우스포인터를이사각형들에갖다댄후마우스를클릭하면각색깔마다다른음을연주할수있도록합시다. colors.png 4. 한붓그리기 키보드의화살표키를사용하여스프라이트를이동시키면스프라이트가움직인경로를따라선이그려지도록스크립트를작성해봅시다. 이때스프라이트는아래그림처럼삼각형모양의화살표를사용하도록하고이화살표의방향은화살표키의방향과일치할수있도록합시다. angle.png -67-
2 장로킷시뮬레이터 01 인벤터보드시뮬레이션 -68-
인벤터보드시뮬레이션 ROKIT Simulator 인벤터보드와 PC 간의다양한콘텐츠를통해로봇, 드론, 게임등을 USER 가원하는대로제어하고 SW 를이해할수재미있게이해할수있는 SW 프로그램입니다. 양옆아날로그 IR 센서사용 양옆아날로그 IR 센서사용 뒷면디지털 IR 센서사용 양옆아날로그 IR 센서로방향결정 뒷면중앙센서처음위치로앞쪽 IR 센서로자율비행훈련 뒷면 IR 중앙 3 개중심 로봇청소기세팅하기 미션 Q. 누가안떨어트리고움직이며오래견디나? -69-
인벤터보드시뮬레이션 ROKIT smart inventor board 인벤터보드는 IR 센서, 부저, LED, 모터와통신제어모듈등이모두내장된응용확장가능한 HW 입니다. 스크래치, 아두이노, Unity 3D 와접목하여다양한기능을수행해내는전자장치입니다. -70-
인벤터보드시뮬레이션 구성품과인벤터보드의설치 인벤터보드와 PC 를셋팅및연결하는방법을알아보도록합시다. Inventor Board Downloader Cable Downloader USB Cable < 연결에필요한구성품들 > 1. Inventor Board 와컴퓨터를연결합니다. (Inventor Board UART 에 Board Cable 연결 ) -71-
인벤터보드시뮬레이션 PC 와하드웨어연결 PC 와인벤터보드다음과같이통신케이블로연결되어야합니다. 연결후드라이버를설치및확인합니다. 2. Downloader 와 Downloader Cable 을연결합니다. 3. Downloader 와 USB Cable 을연결합니다. 4. Inventor Board 와컴퓨터를연결합니다. (Inventor Board UART 에 Board Cable 연결 ) -72-
인벤터보드시뮬레이션 데이터모니터링 인벤터보드에는수많은센서와 LED 모듈들이내장되어있습니다. 이값을통해로봇제어보드의원리와용도를정확히이해하고활용할수있게됩니다. -73-
인벤터보드시뮬레이션 데이터모니터링 : 디지털 IR 센서입력 디지털신호란 0 또는 1 과같은연속되지않는두개의숫자로정보를생성하는것을뜻합니다. 보드뒷면의 7 개디지털 IR 센서 감지시에앞면의 8 개의 LED 로확인할수있으며밑면가운데센서가앞면의 3,4 번 LED 두개와연결되어있는것이특징입니다. -74-
인벤터보드시뮬레이션 데이터모니터링 : 아날로그 IR 센서입력 아날로그신호란끊김없이계속적으로이어지는숫자시스템으로보통전자에서는 (0~1023) 의값을갖고, 디지털이 1 과 0 으로만이어져있는것과차이점이있습니다. IR 센서이외에도가변저항이나초음파센서등입력을아날로그로받는것들이모두해당됩니다.IR 센서보정값 (0 1023) IR 센서보정값 (0~1023) IR 센서실제값 IR 센서가용범위 디지털로사용시 1: On/ 0 : Off 경계값미리보기조절바. 마우스로드래그하여원하는경계값을확인할수있습니다. -75-
인벤터보드시뮬레이션 데이터모니터링 : LED, 출력 인벤터보드에내장된 LED 와추가로외부에연결된출력모듈을제어할수있습니다. 외부 LED 및출력모듈을연결하고 On/Off 제어 7 개의 LED On/Off 제어 소리나 LED,7-Segment 와같은출력모듈을제어가능합니다. -76-
인벤터보드시뮬레이션 데이터모니터링 : DC 모터 DC 모터란? 바퀴와같이회전하는모터로, 속도와방향으로다양한구동이되는모터입니다. 슬라이더바의눈금에따라속도와방향이결정됩니다. stop M1 CCW CW M1 (Motor 1) M2 M2 (Motor 2) -77-
인벤터보드와핀맵 핀맵 핀맵이란제어보드의핀에대한정보를한눈에알아볼수있도록작성된그림이나문서를말합니다. 이것은특히소프트웨어코딩을할때에큰도움이됩니다. 핀맵의필요성 제어보드로소프트웨어코딩을하기위해서는제어보드에대한기초지식이필요합니다. 이러한정보는방대하고어렵기때문에배우기에매우까다롭습니다. 이러한어려움을해결하고자, 제어보드의정보를알아보기쉽게표시한핀맵을만들게되었습니다. -78-
인벤터보드와핀맵 핀맵사용하기 핀맵은다음과같이구성되어있습니다. 핀의기능이나용도 핀의번호 핀의번호 는코딩중에해당하는핀을제어해야하는경우사용합니다. 11번부터 18번까지의핀의경우핀의기능이나용도를보면 LEDDisplay 라는것을알수있듯, 각핀의기능을알수있습니다. 이처럼핀맵에적혀있는번호와용도를가지고실제 S/W 코딩에활용할수있습니다. -79-
인벤터보드와아날로그센서 아날로그값블록의사용 (1) 스마트인벤터보드의앞면 3 개의센서에물체나손을감지하면제어기는감지상태에따라 0 에서부터 1023 사이의값으로표현합니다. 물체가센서에가까이있으면 0 에가까운값을출력하고, 물체가멀리있으면 1023 에가까운값을출력합니다. 이처럼센서의감지상태에따라제어기가연속적인값을출력하는것을아날로그값출력이라합니다. 아날로그출력이가능한핀은 19 번부터 26 번까지이며, 보드전방의세개센서는아래그림처럼 19 번부터 21 번핀에연결되어있습니다. 가운데센서 왼쪽센서 오른쪽센서 -80-
로킷브릭 : 아날로그값블록 아날로그값블록의사용 (2) 아래와같이아날로그값블록의핀값을 20 번으로한후단순히블록을클릭해주면말풍선으로센서값이출력됩니다. ( 제어기와로킷브릭이먼저연결되어있어야합니다 ) 또한아래와같이스크립팅하는방법도있습니다. 변수를만든후아날로그값을저장한다음말하기블록을사용하여변숫값을나타내줍니다. 이렇게하면계속해서센서의값이스프라이트말풍선으로출력됩니다. -81-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 실습해봅시다 1. 센서감지시켜보기 : 스마트인벤터보드앞부분에있는가운데센서 (20 번 ) 값을계속해서스프라이트의말풍선으로나타날수있도록스크립트를작성합니다. 작성한스크립트를실행한후이센서에손이나물체를감지시켜봅시다. 도움말 : 아날로그값읽기 블록을말하기블록과결합하여사용하였습니다. 무한반복을해야계속현재값이보여질수있습니다. 이예제에서는변수블록을사용하지않았다는것에유의하세요. 2. 스테이지에센서값표시하기 : 스마트인벤터보드앞부분에있는센서 3 개값을스테이지에표시하고 3 개의센서들에손이나물체를감지시켜봅시다. 도움말 : 먼저 3 개의센서값을저장할수있는변수 3 개를만들어줍니다. 이 3 개의변수에무한반복블록을사용하여계속센서값들을읽어들입니다. -82-
실습해봅시다 3. 센서값으로캐릭터움직이기 : 스마트인벤터보드의앞부분가운데센서를손으로감지할때마다스테이지에있는캐릭터가튀어오르게해보세요. 손을떼면다시원래자리로돌아와야합니다. 도움말 : 센서값이 100 보다작아지면스프라이트가움직이는것으로하였습니다. 이값은주위환경의밝기에따라달라질수있으므로직접값을검사해보는것이좋습니다. 센서값을검사하는가장편한방법으로는다른블록과결합되지않은 아날로그값읽기 블록을클릭해보는것입니다. 이렇게하면작은말풍선으로클릭한순간의센서값이표시됩니다. -83-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 1. 스마트인벤터보드의앞부분가운데센서를감지하면미사일이발사되듯이스프라이트가스테이지의아래쪽에서위로빠르게올라갈수있도록스크립트를작성해봅시다. 2. 스테이지에캐릭터스프라이트를불러옵니다. 스마트인벤터보드의앞면왼쪽센서를감지하면스프라이트가왼쪽으로이동하고오른쪽센서를감지하면오른쪽으로이동하며가운데센서를감지하면점프하는효과를만들수있도록스크립트를작성해봅시다. -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-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 실습해봅시다 1. LED 점멸시키기 : 스마트인벤터보드의 LED 장치들중 11 번과 18 번에동시에불이들어와서 1 초간격으로깜빡일수있도록스크립트를작성해봅시다. 도움말 : ~ 초기다리기 블록의값을조절하면깜빡이는주기가변화하게됩니다. 시간을변화시켜서다양한주기를만들어봅시다. -96-
실습해봅시다 2. LED 모두켜기 : 스마트인벤터보드의앞부분에있는가운데센서를감지했을때 8 개의 LED 가모두켜지게해봅시다. 감지되지않은경우에는 8 개의 LED 가전부꺼지게합니다. 도움말 : 조건블록을사용해서센서가감지되었는지알아봅니다. < 조건 > 센서값이 100 보다작아지면 LED 를모두켭니다. 이때왼쪽스크립트처럼반복문을사용하면더짧은스크립트로만들수있습니다. 단, 디지털핀의번호에도변수를사용하여바꿔줘야하는것에유의합니다. -97-
실습해봅시다 3. LED 켰다끄기 : 스마트인벤터보드의 8 개 LED 를왼쪽부터 0.1 초간격을주어차례대로불을켭니다. 8 개의 LED 가전부켜지면, 그즉시모두꺼지고다시처음과같은동작을반복하게하여봅시다. 도움말 : 왼쪽과오른쪽은서로동일한결과를만들지만반복문과변수를사용하여스크립트를좀더짧게만들수있습니다. 왼쪽에있는스크립트에서는핀번호를직접입력하지않고 'led' 라는변수블록을만들어디지털핀블록에결합하였습니다. 그리고이변수블록의값을 1 씩증가시켜 LED 를제어하였습니다. -98-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 1. 스마트인벤터보드의앞부분에있는세개의센서를사용합니다. 왼쪽센서를감지하면가장왼쪽에있는 LED 가켜지고가운데센서를감지하면가운데있는두개의 LED 가켜지며오른쪽센서를감지하면가장오른쪽에있는 LED 가켜질수있게해봅시다. 2. LED 에니메이션 : 스마트인벤터보드의 LED 불빛이왼쪽부터오른쪽으로순서대로켜진후, 다시오른쪽부터왼쪽으로켜지는동작을계속반복할수있게스크립트를작성해보세요. -99-
연습문제 3. 스테이지버튼으로 LED 제어 : 스테이지에아래와같은세개의사각형이있습니다. 사각형들을마우스로클릭하면사각형의색이파랗게변하는동시에스마트인벤터보드의 LED 가켜졌다가마우스버튼을떼면 LED 가다시꺼지게해봅시다. 맨왼쪽사각형을클릭하면맨왼쪽 LED 가켜지고가운데사각형을클릭하면가운데두개의 LED 가꺼지고오른쪽사각형을클릭하면맨오른쪽 LED 가켜지게해봅시다. -100-
연습문제 4. LED 로레벨표시 : 옆의그림과같이스테이지에슬라이더를구성합니다. 슬라이더의구성은아래와같습니다. 1 가운데레버는마우스를따라움직입니다. 그러나레버가양끝에위치하면마우스를따라움직이지않고멈추어있어야합니다. 2 옆그림처럼그림처럼레버가오른쪽으로움직이면움직인만큼 LED 불빛이늘어납니다. 다시레버가왼쪽으로움직이면움직인만큼 LED 불빛이줄어들게됩니다. 3 레벨미터에눈금이 7 개가표시되어있습니다. 각눈금과레버가만났을때 LED 불빛의변화가있습니다. 마우스의움직임에따라레버와 LED 가변화할수있게스크립트를작성해봅시다. Control1.png Control2.png Control3.png -101-
2 장로킷시뮬레이터 03 로봇구동시뮬레이션 -102-
로봇시뮬레이션 GUI 프로그래밍기능 간단한클릭만으로로봇의움직임을프로그래밍할수있습니다. 로봇이지능적으로움직일수있는논리를프로그래밍할수있는시뮬레이션이가능하며. 실제로봇이없어도로봇에대한기본개념과학습이가능합니다. 버튼을클릭하면아래로풀다운메뉴가나타나며해당프로그래밍화면으로이동할수있습니다. -103-
로봇시뮬레이션 미로탐험로봇 : 어보이더 1 전방에 2 개이상의물체감지센서를통해물체를감시함과동시에미로의길을지능적으로알아내는기능을손쉽게프로그래밍하고원리를학습할수있습니다. 장애물감지센서의감지상황에따라해당동작을지정하여로봇이미로를막힘없이누비고다닐수있도록프로그래밍합니다. -104-
로봇시뮬레이션 미로탐험로봇 : 어보이더 2 벽감지센서감도조절슬라이더 세개의슬라이더바를조절하여센서의감지거리를변경할수있습니다. 상황별동작지정버튼 센서의상황에따른해당버튼을클릭하면지정된동작을변경할수있으며, 우측의시작버튼을누르면센서상황에맞는동작을실행합니다.. -105-
로봇시뮬레이션 라인트레이서 1 스마트보드의밑면에있는 7 개의적외선센서로 2cm 이내의연속된선을감지하여따라가는로봇을구현한시뮬레이션입니다. 미리입력된프로그래밍을통해구동되는로봇의시스템을알수있습니다. 로봇이처해있는교차로모양과그에따른동작을순차적으로지정하여원하는곳으로로봇을이동시킵니다. -106-
로봇시뮬레이션 라인트레이서 2 진행순서프로그래밍셀 상황별교차로상태와그에따른동작을각각클릭하여순차적으로작성합니다. 현재라인상황과동작패턴을잘생각해서해보도록합니다. 좌측의실행항목에체크하여실행할셀을활성화시킵니다. 시작버튼을눌러로봇을작동시킵니다. -107-
로봇시뮬레이션 추락방지로봇 : 스모로봇 1 바닥에세개의센서를이용하여낭떠러지를감지하고회피하는로봇을뜻합니다. 하얀바닥위에서구동하여야하는추락방지로봇의원리는청소기로봇에도그대로적용할수있습니다. 낭떠러지감지센서의감지상황에따라해당동작을지정하여로봇이패널위에서떨어지지않고자유롭게움직일수있도록프로그래밍해야합니다. -108-
로봇시뮬레이션 추락방지로봇 : 스모로봇 2 상황별동작지정버튼 센서의상황에따른해당버튼을클릭하면지정된동작을변경할수있습니다. 각버튼의좌측의슬라이더를사용하여해당동작의지속시간을변경할수있습니다.(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 18 번만 감지한경우 : Bottom Side 18 번과 11 번을 감지한경우 : Bottom Side -115-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 실습해봅시다 1. 딥스위치로말풍선나오게하기 : 딥스위치 3 번을올리면스프라이트의말풍선에 Switch On! 이라는메시지가나오고딥스위치를내리면 Switch Off 라는메시지가나오게스크립트를작성해봅시다. 도움말 : 딥스위치 3 번에해당하는핀번호는 10 번입니다. 10 번값이 거짓 이면스위치가아래로내려간상태이고반대로 참 이면스위치가위로올라간상태입니다. -116-
실습해봅시다 2. 딥스위치로 LED 키고끄기 : 딥스위치 1 번을올리면아래그림과같이맨왼쪽 (11 번 ) LED 가켜지고스위치를내리면 LED 가꺼지게해봅시다. 마찬가지로딥스위치 2 번을올리거나내리면가운데 LED(14, 15 번 ) 2 개가켜지거나꺼지고딥스위치 3 번을올리거나내리면맨오른쪽 (18 번 ) LED 가켜지거나꺼지도록스크립트를작성해봅시다. 도움말 : 스위치의상태는계속고정되므로스위치를위로올릴경우디지털값은 거짓 이되고조건블록의 만약 아래의스크립트부분이실행됩니다. 딥스위치를아래로내리면디지털값읽기블록의값은 참 이됩니다. 따라서 만약 ~ 라면 블록에서 하단의아니면 아래에연결된블록들이실행됩니다. -117-
실습해봅시다 3. 부저연주하기 : 7 조센서값을이용하여 18 번핀에연결된센서가감지되면 도 음이연주되고, 17 번핀에연결된센서가감지되면 레 음이연주되게해봅시다. 이렇게각센서가감지될때마다각각의음이연주될수있는스크립트를작성해보세요. 도 레미파솔라시 Bottom Side 도움말 : 아무것도감지되지않은상태에서 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-118-
실습해봅시다 4. 스프라이트전진시키기 : 옆그림과같은레이싱카모양의스프라이트가있습니다 (racingcar.png 를가져오기 ). 7 조센서의왼쪽센서 (11 번 ) 를감지시키면왼쪽으로회전하고오른쪽센서 (18 번 ) 를감지시키면오른쪽으로회전합니다. 또한 11 번과 18 번을동시에감지시키면스프라이트가전진할수있도록스크립트를작성해봅시다. 도움말 : 이예제에서는센서를동시에두개이상감지시키는경우, 어떻게처리할것인지잘보여줍니다. 맨왼쪽센서의 7 조센서값은 128 이고맨오른쪽센서의 7 조센서값은 1 이므로두개를동시에감지시키면 128+1 즉, 129 가 7 조센서값이됩니다. 이러한원리로 7 조센서중동시에여러개의센서를감지시키는경우를구별할수있습니다. -119-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 1. 오른쪽그림과같이스테이지에 1 번부터 3 번까지숫자가적혀있습니다. 각숫자는별개의스프라이트로이루어져있습니다. 여기에서특정숫자의딥스위치를올리면스테이지위에서해당하는숫자의색상이바뀌도록해봅시다. 그리고스위치를내리면원래의색상으로돌아올수있도록합니다. 2. 아래그림처럼스마트인벤터보드의 7 조센서를폭이약 2cm 정도인검은선에감지시키며좌우로움직입니다. 이때스테이지에나타난검은선역시 7 조센서가선을감지하는상태에따라좌우로움직일수있도록하여봅시다. 예를들어 12 번센서가선을감지하였다면스테이지에있는선도가운데를기준으로해서 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 모터가연결되는핀입니다. DC 모터의선을이부분에연결합니다. 스마트인벤터보드는 2 개의 DC 모터를제어할수있으며따라서핀역시 M1 과 M2 두부분으로이루어져있습니다. DC 모터선을연결할때에는 + 방향에빨간색선이오도록하면됩니다.M3 는 M1 과동일한연결핀으로서독립적으로제어되는것이아니라 M1 의모터속도와방향을그대로따릅니다. M4 역시도 M2 와동일한연결핀으로서 M2 와동일하게움직입니다. -127-
로봇의제어 - DC 모터블록사용하기 DC 모터블록의첫번째탭은모터번호, 두번째는모터의속도, 마지막탭은모터의동작을결정합니다. 아래는이미지는여러가지 DC 모터블록의사용법을알려줍니다. - M2 핀에연결된 DC 모터를속도 70, 방향은역회전 ( 시계반대방향 ) 으로움직입니다. - M2 핀에연결된 DC 모터를속도 70, 방향은역회전 ( 시계반대방향 ) 으로움직입니다. -M1 핀과 M2 핀에연결된두개의 DC 모터를속도 50, 각자다른방향으로움직입니다.1 초동안움직임을유지하다가동시에두모터가멈추게합니다. -128-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 실습해봅시다 1. DC 모터구동하기 : DC 모터를 M1 핀에연결합니다. 스페이스키를누르면 1 초동안은시계방향 ( 정회전 ) 으로, 그리고다음 1 초동안은시계반대방향 ( 역회전 ) 으로회전한후모터가정지되도록해봅시다. 도움말 : DC 모터는멈춤블록으로명령을내려야만멈추게됩니다. 별도의멈춤명령이없다면스크립트실행이멈추었을때, 심지어보드와의통신이끊어진경우에도모터는움직입니다. 이럴경우에는보드의리셋버튼을누르면모터가멈춥니다. 2. DC 모터구동하기 : DC 모터를두개준비하여하나는 M1 핀에, 다른하나는 M2 에연결합니다. 스크립트를클릭하면두개의모터모두 1 초동안은시계방향으로회전하며, 다음 1 초동안은시계반대방향으로회전한후멈출수있도록스크립트를작성해봅시다. 도움말 : 멈춤명령을내린경우 DC 모터의속도나방향설정은중요하지않습니다. 속도나방향설정과는무관하게멈춤이나풀림은동일한효과를가져옵니다. -129-
실습해봅시다 3. DC 모터구동하기 : DC 모터 2 개를 M1 핀과 M2 핀에각각연결합니다. 스마트인벤터보드의앞쪽세개의센서중왼쪽센서를감지하면 M1 핀에연결된모터가회전하고, 오른쪽센서를감지하면 M2 핀에연결된모터가회전하게해봅니다. 두센서를동시에감지하면두개의모터가함께회전하여야합니다. 도움말 : 만약 ~ 이면 블록을사용하여두모터가독립적으로움직일수있도록하였습니다. 따라서두센서를한꺼번에감지했을경우두모터가동시에움직이려면두 DC 모터는독립적으로제어될수있어야합니다. -130-
예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 연습문제 1.DC 모터를 M1 핀에연결한후, 키보드의위쪽화살표키를누르면모터의속도가서서히증가하고아래쪽화살표키를누르면속도가천천히내려갈수있도록스크립트를작성해보세요. 2. 아래그림과같이스프라이트에는슬라이더바가있습니다. 슬라이더바의움직임에따라 M1 핀에연결된 DC 모터의속도가변화합니다. 1 슬라이더바의레버는마우스에따라움직이는데, 마우스가양끝으로가게되면더이상따라오지않고제자리에서멈춰있어야하며이때 DC 모터역시멈춰야합니다. 2 레버가중간에위치할때에도 DC 모터는멈춰야합니다. 3 4 레버가마우스의움직임에따라왼쪽으로움직일때에는모터가시계방향 ( 정회전 ) 으로회전하며속도는레버의움직인양에비례해서빨라져야합니다. 레버가마우스의움직임에따라오른쪽으로움직일때에는모터는시계반대방향 ( 역회전 ) 으로회전하며속도역시레버의움직인양에비례해서빨라져야합니다. 이처럼레버를좌우로조종하여모터의속도의조절하는패널을만들어봅시다. 속도 : 정방향최대 속도 : 0 속도 : 역방향최대 -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 모터블록은다음과같이세가지의값을입력하도록되어있습니다. 1. 모터선택 : 어떤모터를? 스마트보드는두개의모터를제어할수있습니다. 두개의모터를각각 M1 과 M2 라고합니다. 움직이고싶은모터를연결하고, 알맞게선택하도록합니다. M1 M2 2. 모터속도 : 회전속도는? 모터의속도를정합니다. 모터의속도는 0 부터 100 까지입니다. 숫자가클수록모터의속도가빨라집니다. 3. 모터동작 : 어떤동작을? 모터의동작을정합니다.DC 모터는다음과같은동작을합니다. 정회전 : 모터를시계방향으로회전합니다. 역회전 : 모터를시계반대방향으로회전합니다. 멈춤 : 모터를정지시킵니다.( 자전거의브레이크를밟듯이정지 ) 풀림 : 모터를정지시킵니다.( 자전거의페달을놓듯이정지 -135-
DC 모터의활용 DC 모터블록사용하기 로킷브릭의 로킷스마트 탭을누르면아래그림과같은블록리스트들이나열됩니다. 그중 DC 모터관련블록을사용할것입니다. 다음의예제로모터의동작을살펴봅시다. M1 에해당하는모터를 50 의속도로시계방향으로회전하고,1 초를기다린후에, 멈추고다시 1 초를기다리는것을반복하는예제입니다. -136-
DC 모터의활용 DC 모터속도와방향을센서로제어하기 스크립트를작성하기전에먼저센서입력값을저장할 3 개의변수블록을미리만들어놓도록합니다. 변수는각각다음의위치에해당하는센서값을저장하게됩니다. LEFT CENTER RIGHT -137-
DC 모터의활용 DC 모터속도와방향을센서로제어하기 1. 센서로모터방향제어하기 보드의적외선센서에감지가되면값이작아지게됩니다. 센서값이 100 보다작아지면, M1 모터가정회전을하게됩니다. 반대로, 센서가감지가되지않을때는,M1 모터가역회전을하게됩니다. 모터정회전 센서값이 100 보다작을때 Center 센서 센서값이 100 보다클때 모터역회전 -138-
DC 모터의활용 DC 모터속도와방향을센서로제어하기 2. 센서로모터속도제어하기 센서값으로모터의속도를제어합니다. 센서값은 0 부터 1023 까지입력이되며, 속도값은 0 부터 100 까지입력이가능하므로, 센서값과속도값의범위를맞춰주기위해서센서값을 10 으로나누어서그값을속도에입력합니다. 센서값 700 500 200 센서값나누기 10 속도값 70 50 20 LEFT 센서가감지되면 M1 모터의속도가줄어들게되고, RIGHT 센서가감지되면 M2 모터의속도가줄어들게됩니다. -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-
키보드를활용한구동 스크립트만들기 Speed 를 80 으로넣어줌 ( 숫자크기에속도변화 ) 조건문을무한반복하기 조건 1> 위쪽화살표 M1: 역회전,M2: 정회전전진 조건 2> 아래쪽화살표 M1: 정회전,M2: 역회전후진 조건 3> 왼쪽화살표 M1: 정회전,M2: 정회전좌회전 조건 4> 오른쪽화살표 M1: 역회전, M2: 역회전우회전 조건이아닐때 ( 키를안누를때 ) 정지 -153-
키보드를활용한구동 스크립트만들기 Speed 를 80 으로넣어줌 ( 숫자크기에속도변화 ) 조건문을무한반복하기 조건 1 전진 조건 2 후진 조건 3 우회전 조건 4 좌회전 조건이아닐때 정지 -154-
키보드를활용한구동 로봇조종하기 Rokit brick 의무대에서 x 축 ( 가로 ), y 축 ( 세로 ) 을마우스로클릭하면전, 후, 좌, 우로로봇이구동합니다. -155-
연습문제 예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 1. 순차적으로출발지점부터목표지점까지자동으로도착할수있도록스크립트를작성해보세요 1) 직선코스 2) 직진후방향이동코스 GOAL GOAL 2. Rokit brick 의무대에서원의지름을조절하여지름의변화만큼로봇이원을그리는스크립트를작성해보세요. -156-
3 장로봇과큐브웍스 02 어보이더 -157-
어보이더 어보이더의소개 어보이더는전방에장애물이있으면다른방향으로회전해다시움직이는로봇입니다. 적외선을전방으로쏘아반사되는빛의양으로장애물의유무를알아내어장애물을피해갑니다. 어보이더의원리를직접제작하며배워봅시다. -158-
어보이더알고리즘 원리 장애물을피하며장애물의반대방향으로움직입니다. -159-
프로그램설명 변수설명 변수만들기를사용하여 5 개의변수블록을만들어줍니다. sensorl - 왼쪽센서의아날로그값 sensorm - 중앙센서의아날로그값 sensorr 오른쪽센서의아날로그값 speed 모든모터의속도 limit -기준이되는값 해당변수의아날로그값 만들어진 sensor 변수에는앞서배웠던보드전방의 IR 센서보정값 (0 1023) 이들어갑니다. sensorl 19핀 sensorm 20핀 sensorr 21핀 이러한값이들어가려면각센서의해당핀번호가입력되어야만메인보드로입력되는값이실시간으로감지되어변수값으로전달됩니다. -160- 실시간아날로그
프로그램설명 반복 변수선언 변수 speed 와 limit 는스크립트가시작할때각각특정한값을가져야합니다. 이것을초기값이라합니다. 모터속도를제어하는값인 speed 는초기값이 80 입니다. 또한센서의감지여부를결정하는값이들어있는변수 limit 의초기값은 200 입니다. 아날로그값 앞부분세개의센서값을읽어서각각의변수에저장합니다. 이스크립트들이무한반복하기블록안에들어있다는점을유의해주세요. 조건 1 왼쪽센서값이변수 limit 보다작으면물체가감지된것으로판단하고모터를움직여서오른쪽으로회전합니다. 이때모터의회전방향은둘다역회전이어야오른쪽으로회전할수있습니다. 조건 2 가운데센서값이변수 limit 보다작으면물체가감지된것으로판단하고모터를움직여서 0.5 초정도후진한후오른쪽으로회전합니다. 이렇게후진한다음회전하면더욱안정적으로물체를피할수있습니다. 조건 3 조건아니면 오른쪽센서값이변수 limit 보다작으면물체가감지된것으로판단하고모터를움직여서왼쪽으로회전합니다. 이때모터의회전방향은둘다정회전이어야왼쪽으로회전합니다. 3 개중어떤센서도감지되지않은경우에는로봇은전진합니다. 두개의모터중왼쪽 (1 번 ) 모터는역회전, 오른쪽 (2 번 ) 모터는정회전할때전진하게됩니다. -161-
연습문제 예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 1. 다음과같이빛을따라오는로봇응용스크립트를작성해보세요. 센서로입력된빛을따라가며움직입니다. 센서의입력이없을때 ( 빛이없을때 ) 정지 두개의센서에입력이들어올때 ( 빛이비출때 ) 전진 왼쪽센서에입력이들어올때 ( 빛이왼쪽에서비출때 ) 오른쪽센서에입력이들어올때 ( 빛이오른쪽에서비출때 ) 좌회전 우회전 2. 다음과같은미로를탈출하기위한어보이더응용스크립트를작성해보세요 -162-
3 장로봇과큐브웍스 03 바닥감지로봇 -163-
바닥감지로봇 바닥감지로봇 ( 스모로봇 ) 의소개 2 개의 DC 모터를사용하여앞으로나아가는자율주행방식의 2 륜구동로봇입니다. 스마트보드의뒷면에배치한 7 개의적외선센서로로봇이전진하는동안바닥의상태를감지합니다. 밑면의적외선센서들이바닥이더이상존재하지않는상태를감지하면로봇의몸체를후진하거나옆으로회전하여다른방향으로나아갑니다. 이러한동작을반복하여낭떠러지로둘러싸인일정한영영ㄱ을추락하지않고자유롭게주행합니다. -164-
바닥감지로봇알고리즘 원리 센서로입력된값이없을때는후진후방향을틀어다른쪽으로이동합니다. -165-
프로그램설명 변수설명 변수만들기를사용하여한개의변수블록을만들어줍니다. speed 모든모터의속도 보드뒷면 7 개센서의디지털값 보드뒷면의 7 개의센서가디지털방식의 IR 센서입니다. 디지털센서란 0 또는 1 과같은연속되지않는두개의숫자로정보를생성하는것을뜻합니다. 14.15 핀 18 핀 17핀 16핀 13핀 12핀 11핀 센서 4 개 : 11,12,17,18 사용 -166-
프로그램설명 변수선언 반복 조건문을무한반복 변수 speed 에 80 을저장 조건 1 바닥에있는디지털센서중 11,12 번센서가바닥을감지안할때후진 0.5 초간대기 오른쪽으로회전 0.5 초간대기 조건 2 바닥에있는디지털센서중 17,18 번센서가바닥을감지안할때후진 0.5 초간대기 왼쪽으로회전 0.5 초간대기 조건이아닐때 조건아아닐때전진 -167-
연습문제 예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 1. 바닥에검은색절연테이프를붙이고물체를모두밖으로내보내는스모형식의로봇응용스크립트를작성해보세요. 2. 다음과같은미로를탈출하기위한어보이더응용스크립트를작성해보세요 -168-
3 장로봇과큐브웍스 04 라인트레이서 -169-
라인트레이서 라인트레이서의소개 스마트보드의밑면에있는 7 개의적외선센서로 2cm 이내의연속된선을감지하여따라가는로봇입니다. 적외선센서는검은색과하얀색의차이를가장잘감지하므로라인트레이서가따라가야할선은하얀색바탕에검은색선으로합니다. 이선을감지하면서로봇이전진하는중에로봇의중심이선에서벗어나면좌우모터속도를조절하여원상태로되돌아오도록합니다. -170-
라인트레이서알고리즘 원리 검은색 : 입력이없음 ( 적외선을흡수 ) 흰색 : 입력이들어옴 ( 적외선을반사 ) -171-
프로그램설명 변수설명 변수만들기를사용하여 3개의변수블록을만들어줍니다. speed 모든모터의속도 senl- 왼쪽 12핀센서가감지되면참. 감지되지않으면거짓. senr- 오른쪽 17핀센서가감지되면참. 감지되지않으면거짓. 보드뒷면 7 개센서의디지털값 보드뒷면의 7 개의센서가디지털방식의 IR 센서입니다. 디지털센서란 0 또는 1 과같은연속되지않는두개의숫자로정보를생성하는것을뜻합니다. 14.15 핀 18 핀 17핀 16핀 13핀 12핀 11핀 센서 2 개 : 12, 17 사용 -172-
프로그램설명 반복 변수선언 조건문을무한반복 변수 speed 에 50 을저장 조건 1 바닥에있는디지털센서중 12 핀이감지안되고, 17 핀이감지될때왼쪽으로회전 조건 2 바닥에있는디지털센서중 12 핀이감지되고, 17 핀이감지안될때오른쪽회전 조건 3 바닥에있는디지털센서중 12 핀,17 핀둘다감지될때전진 정지 키보드의스페이스바를눌렀을때정지 -173-
연습문제 예제와연습문제파일다운로드는 rokitarduino.org 웹사이트 DOWNLOADS 를확인해주세요. 자세한내용은교재 12 페이지 1. 바닥에검은색절연테이프를다음과같이붙이고, 두번째교차로지점에서멈추는응용스크립트를작성해보세요. 2. 다음과같은직각형태의라인을통과하여첫번째교차로에서멈추는응용스크립트를작성해보세요. -174-
-175-
-176-