카테고리 없음

초등코딩교육 ScratchX Arduino LED 제어

abc0123 2017. 10. 23. 21:15
반응형

 

아두이노를 제어하는 방법은 여러 가지가 있지만... 요즘 초등코딩교육에 딱 좋은 프로그램인 '스크래치'의 확장판이라고도 할 수 있는 ScratchX로 Arduino LED 제어하는 방법에 대해서 알아보고자 한다. 일단 이 ScratchX를 사용하기 위해서는 FireFox 브라우저만 사용해야 한다는 불편함이 있지만 블록 놀이하듯이 프로그램을 만들 수 있기 때문에 다른 어떤 프로그램보다 어린아이들이 공부하기에는 좋을 것이다.

 

 

그리고 프로그램을 공부하는데 있어서 컴퓨터 모니터에서 실행되는 내용만 보는 것보다는 눈앞에 놓인 사물을 제어해서 움직일 수 있다면 코딩에 대해서 더 많은 흥미를 갖게 될 것이다. 나이 먹은 나도 흥미를 느끼는데...ㅋㅋ 여하튼 ScratchX를 사용하기 위해서는 컴퓨터에 몇 가지를 설치하고 설정을 해줘야 하는데 아래 글 보고 그대로 따라 하면 될 것이고...

 

ScratchX

 

이번 글에서는 가장 기본이라고 할 수 있는 아두이노에 연결된 LED를 제어하는 프로그램을 만들어보자.

 

스크래치x 실행

 

▲ 스크래치X를 실행한 모습인데 사실 이 녀석을 처음 만져보는 거라 그 과정에서 상당히 고생을 했더랬다. 혹시 이 글을 보는 사람이 있다면 앞에서 언급한 글 보고 조금이라도 시행착오 하는 일이 없길 바라며...

 

일단 이번 프로그램은 '버튼' 스프라이트를 추가한 후 그걸 클릭하면 버튼의 색이 바뀌면서 아두이노에 연결된 LED가 켜지고... 색이 변한 버튼을 다시 한 번 클릭하면 원래의 색으로 돌아오면서 LED가 꺼지도록 하는 내용이다. 일단 버튼 스프라이트를 추가해보자.

 

스프라이트 아이콘

 

▲ 새로운 스프라이트를 추가하기 위해서 아이콘을 클릭한다.

 

버튼 추가

 

▲ 스크래치에서는 이미 다양한 스프라이트를 제공하는데 직접 포토샵으로 만들어서 사용해도 된다. 나는 포토샵 실력이 이 정도는 안되기 때문에 여기서 제공해주는 것들을 감사하게 사용할 생각이고 이번 예제에서는 Button2를 사용해보기로 했다.

 

 

모양 확인

 

▲ 추가한 후 [모양] 탭을 클릭해서 그 내용을 확인해보니 그림처럼 버튼이 두 개가 있다. 첫 번째는 button2-a로 파란색이며 두 번째는 button2-b로 주황색이다. 이 파란 버튼을 클릭하면 색이 바뀌면서 LED가 켜지고 반대로 주황색이 됐을 때 클릭을 하면 파란색으로 바뀌면서 LED가 꺼지도록 하는 프로그램을 만들어보자.

 

모양 번호

 

▲ 먼저 버튼의 모양 값을 사용하기 위해서 [형태]의 [모양 #]에 체크를 해준다. 그러면 버튼에 1번과 2번의 값이 할당되는데 그림에서 표시한 대로 파란색이 1번이고 당연히 주황색은 2번이 되며 이 값들을 이용해서 프로그램이 실행되도록 할 것이다. 이제 버튼이 선택된 상태에서 블록을 쌓아서 코딩을 해보자.

 

블록 쌓기

 

▲ 버튼 스프라이트가 선택된 상태에서 추가 블록의 [아두이노가 연결됐을 때]와 [ledA]를 O번 핀에 연결하기] 블록을 옮겨서 쌓고 LED를 아두이노 13번 핀에 연결한다고 값을 바꿔줬다. 이 번호가 아두이노 디지털 핀 번호가 된다. 즉, 이렇게 두 블록만 쌓아도 스크래치와 아두이노가 연결되는 순간 디지털 핀 13번에 LED가 할당되는 것이다.

 

 

이제 파란 버튼(모양=1)이 선택됐을 때 LED가 켜지도록 해보자.

 

스프라이트를 클릭했을 때

 

▲ 버튼을 클릭했을 때 이벤트가 발생하도록 하기 위해서 [이벤트]의 [이 스프라이트를 클릭했을 때] 블록을 옮겨놓고 가만히 생각을 해보자. 프로그램 내용은 "만약 파란 버튼을 클릭하면 LED를 켜면서 버튼을 주황색으로 바꿔주면 될 것이고 그렇지 않으면(즉, 주황색 버튼을 클릭 할때는) 반대로 LED를 끄고 버튼의 색을 파란색으로 바꿔주면 되는데..."

 

프로그램 언어를 조금이라도 공부해본 사람들은 if~else 문을 이용해야 한다는 걸 바로 알 수 있을 것이다. 그리고 스크래치에서도 당연히 if(만약에) 블록을 제공하는데 [제어]에서 쉽게 찾을 수 있다.

 

조건문

 

▲ 제어에 이렇게 for 문에 해당하는 반복하기와 조건 문인 if 문에 해당하는 블록이 다 있다. 이 중 if~else문에 해당하는 [만약 ~라면.. 아니면...] 블록을 옮겨서 쌓는다. 그리고 조건에 어떤 게 들어가야 할지 가만히 생각해보면...[모양의 값이 1이면] 파란색 버튼에 해당할 것이다. 그리고 그 아래에는 LED가 켜지고 버튼의 색이 주황색으로 바뀌도록 해주는 내용을 넣으면 될 것이다. 즉, 조건에 [모양=1]이 들어가면 되는데...

 

연산

 

▲ 둘의 모양의 값을 비교하기 위해서 먼저 비교 연산자를 옮겨 놓고 아래 그림처럼 그 값들에 모양과 숫자 1을 넣는다.

 

모양 값 비교

 

▲ 이렇게 하면 '모양'의 값이 '1'이냐고 물어보는 조건이 완성이 된다. 이제 그 아래쪽으로 파란색 버튼이 눌렸을 때 실행될 내용들을 쌓으면 될 것이다.

 

 

실행 내용

 

▲ 먼저 [추가 블록]에서 [ledA를 켜기]을 옮겼으며 형태에서 [모양을 button2-b로 바꾸기] 블록을 추가했다. 이제 파란 버튼을 클릭하면 LED가 켜지면서 버튼의 색이 바뀌게 될 것이다. 다음은 이 두 개의 블록을 복사해서 옮겨 놓은 후 그 값들을 변경해주자. (참고로 복사는 상단 블록, 즉 검은색을 오른쪽 마우스 클릭해서 복사하면 아래쪽까지 한 번에 복사가 된다.)

 

반대값 넣기

 

▲ 그림처럼 '아니면~'이라는 조건에 반대의 값들(ledA 끄기, 모양을 button2-a로 바꾸기)을 넣어서 프로그램을 완성했다. 이제 아두이노에 LED를 꽂고 컴퓨터와 연결할 준비를 하자.

 

아두이노 연결

 

▲ 13번 핀에 저항을 통해서 LED의 양극(+)을 연결했으며 GND에서 음극(-)을 연결하고 있는 모습이다. 이제 스크래치와 아두이노를 연결한 후 버튼을 클릭해보자.

 

 

▲ 갖고 있는 LED가 약한 것들밖에 없어서..ㅎㅎ 빨간색은 아두이노 자체에서 깜빡이는 녀석과 구분이 잘 안되는 거 같아서 흰색 LED로 바꾸고 프로그램을 실행하고 있는 모습이다.

 

이처럼 스크래치를 이용하면 장난감 만들듯이 블록을 쌓아서 다양한 프로그램을 만들고 그것을 아두이노에 연결한 후 확인해볼 수 있는데 이번 글에서는 가장 기초라고 할 수 있는 LED 제어를 해봤다. 다음 글에서는 모터를 활용해서 좀 더 역동적인(?) 제어를 해보기로 하고 여기서 마무리하자.

반응형