co:bit Training Kit 기초강좌 9. 조이스틱을 배워보자.

조이스틱이란 무엇일까?

조이스틱이란 레버를 잡고 상하좌우로 밀거나 당겨서 조작하는 방식의 컨트롤러로, 주로 게이밍 기어로 사용되지만, 산업 현장에서 장비 제어 컨트롤러로도 종종 사용되며, 항공기 등의 조종간으로도 널리 사용되는 입력장치입니다.

준비물

이번 강좌의 준비물은 다음과 같습니다.

  • co:bit Training Kit 베이스 보드 (micro:bit 장착한 상태)
  • 마이크로 USB 케이블 2개
  • 웹브라우저 연결 가능한 PC (맥북, 리눅스 포함) 혹은 크롬북
  • 조이스틱 (co:bit Training Kit에 포함되어 있습니다.)

하드웨어를 준비해 봅시다.

우선 co:bit 베이스보드에 micro:bit를 장착합니다. 장착을 할 때는 micro:bit의 LED와 버튼 부분이 위로 가게 합니다.

 

PC와 micro:bit, co:bit 베이스보드를 각각 USB 케이블로 연결합니다. 아래 사진과 같이 연결하면 됩니다. 그리고 PC에서 웹브라우저를 실행합니다. 웹브라우저는 마이크로소프트의 에지 혹은 익스플로러, 구글의 크롬 등 어떤 브라우저라도 상관이 없습니다.

 

이번에는 조이스틱을 co:bit 베이스보드에 연결합니다. 연결할 때 아래 사진의 설명을 그대로 따라야 합니다. 우선 조이스틱을 준비합니다.

 

co:bit 베이스보드를 자세히 보면 좌측에 영어로 “Joystick” 이라고 적힌 핀단자를 볼 수 있습니다. 이 단자에 조이스틱을 연결합니다.

 

조이스틱과 co:bit 베이스보드를 연결할 때, 아래 사진과 같이 조이스틱의 GND 핀에 연결된 전선이 베이스보드의 흰색 사각형이 위치한 부분에 연결되어야 합니다.

 

위 사진에서 GND 핀에 연결된 파란색 전선이 co:bit 베이스보드의 흰색 사각형이 위치한 부분에 연결된 것을 볼 수 있습니다. (단, 굳이 파란색 전선일 필요는 없습니다.) 이와 같이 연결했다면 하드웨어 준비가 완료된 것입니다.

 


코딩과제 1: 조이스틱으로 LED 그래프 그리기

과제 개요

이번 프로젝트에서는 조이스틱의 출력량을 micro:bit의 LED 스크린에 그래프로 나타내 봅시다.

  1. 코드가 실행되면 “Joy-LED” 라는 문자열이 출력됩니다.
  2. 조이스틱을 움직이면 조이스틱의 X축 값의 출력량이 micro:bit의 LED 스크린에 그래프로 나타납니다.

정확히 코딩이 되었다면 다음과 같이 동작할 것입니다.

 

블럭코딩의 흐름도

 

블럭코딩 하기

이번 프로젝트는 코딩을 하기 위해서 특별한 프로젝트를 사용해야 합니다. 조이스틱을 읽는 확장블럭이 사용되었기 때문입니다. 다음에 링크된 블럭 에디터의 프로젝트를 사용하시기 바랍니다.

https://makecode.microbit.org/_0T3bJDhsEhrC

위 링크로 가면 블럭 에디터에 빈 프로젝트가 화면에 나타날 것입니다. 하지만 다른 비어있는 프로젝트와는 달리 “Cobit-base”라는 확장블럭이 있습니다. 이 “Cobit-base” 확장블럭은 다음과 같습니다.

 

프로젝트에 사용될 블럭 코드들을 살펴봅시다. 완성된 전체 코드는 맨 아래에 있습니다.

“시작하면 실행” 블럭의 코드는 다음과 같습니다. 코드가 실행되면, “Joy-LED”라는 문자열을 출력합니다.

 

“무한 반복 실행” 블럭의 코드는 다음과 같습니다.

 

“무한 반복 실행” 블럭 내 코드들을 살펴봅시다. 우선 “X축”이라는 변수를 설정하고, 조이스틱의 X축 입력값을 X축 변수에 저장합니다.

 

조이스틱의 X축 값을 micro:bit의 LED 스크린에 그래프로 나타냅니다.

 

전체 프로젝트


코딩과제 2: 조이스틱으로 DC모터 속도제어 해보기 

과제 개요

이번 프로젝트에서는 조이스틱을 이용해 DC모터의 속도를 제어하는 코드를 만들어 봅시다. 코드의 동작은 다음과 같습니다.

  1. 코드가 실행되면, “Joy-Motor”이라는 문자열이 출력됩니다.
  2. A 버튼을 누른 후 조이스틱을 움직이면, 조이스틱의 출력량에 따라 DC모터가 회전합니다.
  3. B 버튼을 누르면 DC모터의 회전이 중지됩니다.

정확히 코딩이 되었다면 다음과 같이 동작할 것입니다.

 

하드웨어 준비

이번 프로젝트에서는 co:bit 베이스보드에 조이스틱 뿐 아니라 DC모터를 연결해야 합니다. 연결 방식은 앞서 조이스틱 연결을 통해 설명한 방식과 동일합니다. 아래 사진과 같이 연결해 주면 됩니다.

 

DC 모터를 연결할 때, DC 모터의 GND 핀에 연결된 전선이 co:bit 베이스보드의 흰색 사각형이 위치한 부분에 연결되도록 합니다. 자세한 연결 방법은 DC 모터 강좌에 설명되어 있습니다.

 

블럭코딩의 흐름도

 

블럭코딩 하기

이번 프로젝트 역시 코딩을 하기 위해서 특별한 프로젝트를 사용해야 합니다. 아래 링크의 블럭 에디터 프로젝트를 사용해 주기 바랍니다.

https://makecode.microbit.org/_0T3bJDhsEhrC

 

프로젝트에 사용될 블럭 코드들을 살펴봅시다. 완성된 전체 코드는 맨 아래에 있습니다.

 

“시작하면 실행” 블럭의 코드는 다음과 같습니다. 코드가 실행되면 “Joy-Motor”이라는 문자열이 출력되고, 이후 X 모양 아이콘이 출력됩니다.

 

“모터켜기”라는 변수를 설정하고, A 버튼을 눌렀을 때 모터켜기 변수에 1을 저장하며 ♥ 모양 아이콘을 출력합니다.

 

B 버튼을 누르면 모터켜기 변수에 0을 저장하고, X 모양 아이콘을 출력합니다.

 

“무한 반복 실행” 블럭의 전체 코드는 다음과 같습니다.

 

“무한 반복 실행” 블럭 내 코드들을 살펴봅시다. 우선 “X축” 변수를 선언하고, 모터켜기 변수에 저장된 숫자가 1이면, X축 변수에 조이스틱의 X축 입력값을 저장합니다.

 

DC모터를 반시계 방향으로 (X축 변수에 저장된 수)/10%로 회전시킵니다. DC모터의 출력량은 0%~100% 입니다. 조이스틱의 출력값은 0~1024이므로 조이스틱의 출력량을 그대로 활용하면 조이스틱의 감도가 지나치게 높아집니다. 따라서 조이스틱의 출력값을 10으로 나누어 사용합니다.

 

X축 변수에 저장된 숫자가 1이 아니면, 즉 0이면 DC모터를 멈춥니다.

 

전체 프로젝트


코딩과제 3: 조이스틱으로 버저를 울려보자.

과제 개요

이번 과제에서는 조이스틱을 이용해 버저의 템포를 조절해 봅시다. 코드의 동작은 다음과 같습니다.

  1. 코드가 실행되면 “Joy-buzzer” 이라는 문자열이 출력되고, 이후 X 모양 아이콘이 출력됩니다.
  2. A 버튼을 누르면 ♥ 모양 아이콘이 출력됨과 동시에 버저가 켜집니다.
  3. 조이스틱을 움직이면, 조이스틱의 입력값에 따라 버저의 템포가 조절됩니다.
  4. B 버튼을 누르면 X 모양 아이콘이 출력됨과 동시에 버저가 꺼집니다.

정확히 코딩이 되었다면, 다음과 같이 동작할 것입니다.

 

블럭코딩의 흐름도

 

 

블럭코딩 하기

이번 프로젝트 역시 코딩을 하기 위해서 특별한 프로젝트를 사용해야 합니다. 아래 링크의 블럭 에디터 프로젝트를 사용해 주기 바랍니다.

https://makecode.microbit.org/_0T3bJDhsEhrC

 

프로젝트에 사용될 블럭 코드들을 살펴봅시다. 완성된 전체 코드는 맨 아래에 있습니다.

 

“시작하면 실행” 블럭의 코드는 다음과 같습니다. 코드가 실행되면 “Joy-buzzer” 이라는 문자열이 출력되고, 그 후 X 모양 문자열이 출력됩니다.

 

“버저켜기” 라는 변수를 설정하고, A 버튼을 누르면 ♥ 모양 아이콘이 출력되며 버저켜기 변수에 1이 저장됩니다.

 

B 버튼을 누르면 X 모양 아이콘이 출력되며 버저켜기 변수에 0이 저장되어 버저가 꺼집니다.

 

“무한 반복 실행” 블럭의 전체는 다음과 같습니다.

 

“무한 반복 실행” 블럭 내 코드를 살펴봅시다. “X축” 이라는 변수를 설정하고, 버저켜기 변수에 저장된 숫자가 1이면, X축 변수에 조이스틱의 X축 값을 저장합니다.

 

“도”음을 (X축 변수에 저장된 수)/2 박자로 재생합니다.

 

버저켜기 변수에 저장된 숫자가 1이 아니면, 즉 0이면 P0 디지털 출력을 0으로 설정해 버저를 끕니다. 이렇게 하면 B 버튼을 눌렀을 때 버저가 꺼지게 됩니다.

 

전체 프로젝트