11. RC카 만들기 1

【활동 하기】


1. 재료 준비하기

2. 자동차 조립하기

3. 코드 구성하기

4. 생각해보기

1 재료 준비하기

RC카를 만들기 위해 어떤 도구가 필요할지 생각해보자.


1
이미지. 마이크로비트의 스크린샷.

마이크로비트 2개

2
이미지. 2륜구동 자동차 키트의 사진

2륜 구동 자동차 키트 1개

3
이미지. 점퍼선 색상 별 다수의 사진

점퍼선 색상 별 다수

4
이미지. Keyestudio 마이크로비트 모터 컨트롤러 의 사진

Keyestudio 마이크로비트 모터 컨트롤러 1개

5
이미지. 건전지의 사진

AA 건전지 4개

AAA 건전지 4개

2 자동차 조립하기

조립도를 따라 RC카를 조립한다. 구매한 제품에 따라 조립도는 다를 수 있지만 기본적으로 모터와 바퀴 조립, 본체와 모터 연결을 기본으로 한다. 아래 순서에 따라 조립해 보자.


1
이미지. 모터와 모터 브래켓의 사진.

모터와 모터 브래켓을 연결한다.

2
이미지. 조립한 모터를 대칭이 되게 놓은 사진

다른 모터도 대칭이 되도록 조립한다.

3
이미지. 조립한 모터를 자동차 프레임에 연결한 사진.

조립한 모터를 자동차 프레임에 연결한다.

4
이미지. 바퀴와 모터를 조립한 사진

바퀴와 모터를 조립한다.

5
이미지. 캐스터를 본체에 조립한 사진.

캐스터를 본체와 조립하여 균형을 잡도록 한다.

6
이미지. AA배터리 4칸 케이스를 본체와 결합한 사진

AA 배터리 4칸 케이스를 본체와 결합한다.

7
이미지. 모터 드라이버 브레이크아웃 보드와 마이크로비트를 연결하고 자동차에 장착한 사진

모터 드라이버 브레이크아웃 보드와 마이크로비트를 연결하고 자동차에 장착한다.

8
이미지. 오른쪽 모터의 붉은 점퍼선을 모터 드라이버의 A1에 연결하고 검은 점퍼선을 모터 드라이버의 A2와 연결한 사진.

자동차의 캐스터가 뒤쪽으로 향하게 하여 오른쪽 모터의 붉은 점퍼선을 모터 드라이버의 A1에 연결하고 검은 점퍼선을 모터 드라이버의 A2와 연결한다.

9
이미지. 왼쪽 모터의 붉은 점퍼선을 모터 드라이버의 B1과 검은 점퍼선은 B2와 연결한 사진.

왼쪽 모터의 붉은 점퍼선은 모터 드라이버의 B1과 검은 점퍼선은 B2와 연결한다.

10
이미지.건전지 케이스의 붉은 선을 모터 드라이버의 VM 그리고 검은 선은 G에 연결한 사진

건전지 케이스의 붉은 선은 모터 드라이버의 VM 그리고 검은 선은 G에 연결한다.


3 코드 구성하기

자동차의 코드는 두 가지로 구분된다 첫 번째는 송신기다. 송신기는 조종기라고 볼 수 있다. 두 번째는 수신기다. 송신기에서 보내오는 라디오 통신 신호에 따라 앞뒤 좌우로 움직이도록 모터를 컨트롤한다. 라디오 통신을 사용하는 코드를 작성할 때 송신기에서 전달하는 숫자를 잘 기억해 두었다가 수신기의 코드를 작성할 때 알맞은 숫자에 따라 움직임을 제어할 수 있도록 한다


① 송신기

먼저 송신기를 만들기 위해 마이크로비트를 앞으로 기울이면 즉 로고가 땅으로 향하면 앞으로 가게 하고 뒤로 기울이면(하늘로 향하면) 멈추도록 한다. A 버튼을 누르면 외쪽으로 B 버튼을 누르면 오른쪽으로 움직이도록 한다.


1
이미지. 시작하면 실행 블록에 연결된 라디오 그룹을 1로 설정 블록

가장 먼저 송신기와 수신기의 무선 통신을 위해 라디오 그룹을 설정한다.

2
이미지. 로고 땅 방향 감지하면 실행 블록에 연결된 라디오 전송 수 1 블록

마이크로비트를 앞으로 기울이면 (마이크로비트의 로고가 땅으로 향하면) 자동차가 앞으로 가도록 하기 위해 입력 그룹에서 [로고 땅 방향 감지하면 실행] 블록을 사용하여 라디오 통신으로 숫자 1을 전달한다.

3
이미지. 로고 하늘 방향 감지하면 실행 블록에 연결된 라디오 전송 수2 블록

마이크로비트를 뒤로 기울이면(마이크로비트의 로고가 하늘 방향이 되면) 자동차가 앞으로 가도록 하기 위해 입력 그룹에서 [로고 하늘 방향 감지하면실행 ] 블록을 사용하여 라디오 통신으로 숫자 2를 전달한다.

4
이미지. A+B 누르면 실행 블록에 연결된 라디오 전송 수 0 블록

A+B 버튼을 눌러 정지하기 위해 숫자 0을 전달한다.

5
이미지. A 누르면 실행 블록에 연결된 라디오 전송 수 3 블록

A 버튼을 누르면 왼쪽으로 움직일 수 있도록 라디오 통신으로 숫자 3을 전달한다.

6
이미지. B 누르면 실행 블록에 연결된 라디오 전송 수 4 블록.

B 버튼을 누르면 오른쪽을 움직일 수 있도록 라디오 통신으로 숫자 4를 전달한다.


② 수신기


1
이미지. 시작하면 실행 블록에 연결된 라디오 그룹을 1로 설정 블록

송신기에서 전달한 정수를 받기 위해서 라디오 그룹을 1로 설정한다. 라디오 그룹은 송신기에서 정한 숫자로 설정한다.

2
이미지. 시작하면 실행 블록에 연결된 라디오 그룹을 1로 설정 블록, P14에 디지털 값 1 출력 블록

모터 드라이버의 모터에 전력을 공급하기 위해 마이크로비트 14번 핀에 디지털 값을 1로 부여 하면서 전력을 공급한다. Keyestudio의 모터 드라이버는 마이크로비트 14번 핀을 통해 외부로 전력을 공급한다.

3
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 참이면 실행, 아니면서 만약 빈칸 이면 실행, 아니면서 만약 빈칸 이면 실행, 아니면서 만약 빈칸 이면 실행, 아니면 실행 블록

송신된 신호(정수)에 따라 모터의 움직임을 다르게 하여 앞뒤 좌우로 움직일 수 있도록 한다. 먼저 앞, 뒤, 좌, 우 그리고 정지 5가지의 조건을 실행할 수 있도록 조건 블록을 추가한다.

4
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 receivedNumber=1 참이면 실행, 아니면서 만약 receivedNumber=2 이면 실행, 아니면서 만약 receivedNumber=3 이면 실행, 아니면서 만약 receivedNumber=4 이면 실행, 아니면 실행 블록

변수 receivedNumber가 1일 때, 2일 때, 3일 때, 4일 때, 0일 때의 조건을 입력한다.

5
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 receivedNumber=1 참이면 실행, 화살표 출력 북쪽 블록, 아니면서 만약 receivedNumber=2 이면 실행, 화살표 출력 남쪽 블록, 아니면서 만약 receivedNumber=3 이면 실행, 화살표 출력 서쪽 블록, 아니면서 만약 receivedNumber=4 이면 실행, 화살표 출력 동쪽 블록, 아니면 실행 블록. 아이콘출력:하트 블록

변수 receivedNumber의 입력된 숫자가 1일 때 화살표 출력 북쪽, 2일 때 화살표 출력 남쪽, 3일 때 화살표 출력 서쪽, 4일 때 화살표 출력 동쪽이 표현되도록 한다. 0일 때는 정지의 의미로 하트를 출력 한다.

6
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 receivedNumber=1 참이면 실행, 화살표 출력 북쪽 블록, P1에 아날로그 값 1023 출력 블록 아니면서 만약 receivedNumber=2 이면 실행, 화살표 출력 남쪽 블록, 아니면서 만약 receivedNumber=3 이면 실행, 화살표 출력 서쪽 블록, 아니면서 만약 receivedNumber=4 이면 실행, 화살표 출력 동쪽 블록, 아니면 실행 블록. 아이콘출력:하트 블록

오른쪽 모터와 연결된 모터 드라이버의 A 단자에 명령을 내리기 위해서는 마이크로비트의 1번 핀에 아날로그 값 1023을 출력한다. 아날로그 값을 출력하는 이유는 모터가 돌아가는 속도를 조절하기 위해서이다.

7
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 receivedNumber=1 참이면 실행, 화살표 출력 북쪽 블록, P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, 아니면서 만약 receivedNumber=2 이면 실행, 화살표 출력 남쪽 블록, 아니면서 만약 receivedNumber=3 이면 실행, 화살표 출력 서쪽 블록, 아니면서 만약 receivedNumber=4 이면 실행, 화살표 출력 동쪽 블록, 아니면 실행 블록. 아이콘출력:하트 블록

13번 핀과 12번 핀을 통해 디지털 값 1, 0으로 모터의 회전 방향을 조절한다. 앞으로 이동하지 위해서는 13번 핀에 1, 12번 핀에 0을 출력한다.

8
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 receivedNumber=1 참이면 실행, 화살표 출력 북쪽 블록, P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 1 출력 블록, P16에 디지털 값 0 출력 블록. 아니면서 만약 receivedNumber=2 이면 실행, 화살표 출력 남쪽 블록, 아니면서 만약 receivedNumber=3 이면 실행, 화살표 출력 서쪽 블록, 아니면서 만약 receivedNumber=4 이면 실행, 화살표 출력 동쪽 블록, 아니면 실행 블록. 아이콘출력:하트 블록

왼쪽 모터와 연결된 모터 드라이버의 B단자에 명령을 내리기 위해서는 마이크로비트의 2번 핀에 아날로그 값 1023을 출력한다. 그리고 15번 핀에는 디지털 값 1, 16번 핀에는 디지털 값 0를 출력하도록 한다.

9
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 receivedNumber=1 참이면 실행, 화살표 출력 북쪽 블록, P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 1 출력 블록, P16에 디지털 값 0 출력 블록. 아니면서 만약 receivedNumber=2 이면 실행, 화살표 출력 남쪽 블록, P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 0 출력 블록, P12에 디지털 값 1 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 0 출력 블록, P16에 디지털 값 1 출력 블록. 아니면서 만약 receivedNumber=3 이면 실행, 화살표 출력 서쪽 블록, 아니면서 만약 receivedNumber=4 이면 실행, 화살표 출력 동쪽 블록, 아니면 실행 블록. 아이콘출력:하트 블록

뒤로 이동하기 위해서는 13번 핀과 12번 핀 그리고 15번 핀과 16번 핀의 디지털 값을 바꿔준다. 13번 0, 12번 1, 15번 0, 16번 1

10
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 receivedNumber=1 참이면 실행, 화살표 출력 북쪽 블록, P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 1 출력 블록, P16에 디지털 값 0 출력 블록. 아니면서 만약 receivedNumber=2 이면 실행, 화살표 출력 남쪽 블록, P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 0 출력 블록, P12에 디지털 값 1 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 0 출력 블록, P16에 디지털 값 1 출력 블록. 아니면서 만약 receivedNumber=3 이면 실행, 화살표 출력 서쪽 블록,P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 500 출력 블록, P15에 디지털 값 1 출력 블록, P16에 디지털 값 0 출력 블록. 아니면서 만약 receivedNumber=4 이면 실행, 화살표 출력 동쪽 블록,P1에 아날로그 값 500 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 1 출력 블록, P16에 디지털 값 0 출력 블록. 아니면 실행 블록. 아이콘출력:하트 블록

왼쪽과 오른쪽으로 회전하기 위해서는 양쪽 모터의 속도를 조절하여 좌우로 회전할 수 있도록 조절한다. 왼쪽으로 이동할 때는 1번 핀의 아날로그 값을 1023출력 그리고 2번 핀의 아날로그 값을 500 출력한다. 오른쪽으로 회전하기 위해서는 반대로 출력되도록 한다.

11
이미지. 라디오 수신하면 실행: receivedNumber 블록에 연결된, 만약 receivedNumber=1 참이면 실행, 화살표 출력 북쪽 블록, P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 1 출력 블록, P16에 디지털 값 0 출력 블록. 아니면서 만약 receivedNumber=2 이면 실행, 화살표 출력 남쪽 블록, P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 0 출력 블록, P12에 디지털 값 1 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 0 출력 블록, P16에 디지털 값 1 출력 블록. 아니면서 만약 receivedNumber=3 이면 실행, 화살표 출력 서쪽 블록,P1에 아날로그 값 1023 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 500 출력 블록, P15에 디지털 값 1 출력 블록, P16에 디지털 값 0 출력 블록. 아니면서 만약 receivedNumber=4 이면 실행, 화살표 출력 동쪽 블록,P1에 아날로그 값 500 출력 블록, P13에 디지털 값 1 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 1023 출력 블록, P15에 디지털 값 1 출력 블록, P16에 디지털 값 0 출력 블록. 아니면 실행 블록. 아이콘출력:하트 블록, P1에 아날로그 값 0 출력 블록, P13에 디지털 값 0 출력 블록, P12에 디지털 값 0 출력 블록, P2에 아날로그 값 0 출력 블록, P15에 디지털 값 0 출력 블록, P16에 디지털 값 0 출력 블록.

마지막으로 자동차를 멈추기 위해 모든 핀의 출력을 0으로 변경한다.


4 생각해보기

마이크로비트를 좌우로 기울여 방향을 조절하려면 어떻게 해야 할까?