[아두이노야 놀자]<16>포텐셔미터로 피하기

가변저항으로 오디오 장치에 많이 쓰이는 모듈 '포텐셔미터'를 활용해 피하기 미션을 수행해 봅시다. 준비물은 아두이노(UNO), USB 케이블, 브레드 보드 각 1개씩과 전선 6개 정도, 포텐셔미터 2개입니다.

[그림 1] 오브젝트 추가하기.
<[그림 1] 오브젝트 추가하기.>

포텐셔미터로 엔트리봇을 조종해 다가오는 용을 피해봅시다. [그림 1]과 같이 용(1), 우주(3)을 불러옵니다. 용과 엔트리봇의 크기를 50으로 줄이고, 용은 왼쪽 눈 아이콘을 클릭해서 실행 화면에서 숨깁니다.

엔트리봇을 움직일 수 있도록 만듭니다. 게임이 시작되면 초시계를 시작하고 포텐셔미터 값에 따라 x좌표와 y좌표를 조정합니다. [그림 2]처럼 왼쪽 포텐셔미터는 아날로그 1번 핀에 연결하고 위아래로, 오른쪽 포텐셔미터는 아날로그 2번 핀에 연결하고 좌우로 움직이게 합니다.

[그림 2] 엔트리봇 위치 조작하기.
<[그림 2] 엔트리봇 위치 조작하기.>

x좌표는 왼쪽 포텐셔미터, y좌표는 오른쪽 포텐셔미터가 조종합니다. x좌표 범위는 -220~220, y좌표 범위는 〃110~110로 포텐셔미터 값을 변환합니다. 왼쪽 포텐셔미터를 반시계방향으로 돌렸을 때 위로 가는 것이 자연스러우므로, 범위를 변환한 값을 0에서 빼 방향을 뒤집어줍니다.

[그림 3] 게임 오버.
<[그림 3] 게임 오버.>

[그림 3]과 같이 엔트리봇이 용에 닿았다면 초시계를 정지하고 모든 코드를 멈춥니다. 주의해야 할 점은 '모든 코드 멈추기'가 먼저 실행되면 초시계 정지 블록마저 작동하지 않아서 초시계가 멈추지 않습니다. '모든 코드 멈추기' 블록은 신중히 다뤄야 합니다.

[그림 4] 용 이동방향 정하기.
<[그림 4] 용 이동방향 정하기.>

다음 [그림 4]와 같이 용 오브젝트를 선택합니다. 게임이 시작되면 50% 확률로 이동 방향을 90˚ 또는 270˚로 정합니다. y좌표를 -100~100 사이로 정하고 복제본을 생성합니다. 이렇게 1초마다 반복합니다.

[그림 5] 직진하기.
<[그림 5] 직진하기.>

생성된 복제본은 [그림 5]와 같이 일단 이동방향의 반대방향(뒤)으로 300만큼 이동시켜 화면 밖으로 보냅니다. 그 후 모양을 보이고 2의 속도로 직진합니다.

[그림 6] 지나간 후에 삭제하기.
<[그림 6] 지나간 후에 삭제하기.>

'복제본이 처음 생성되었을 때'를 하나 더 꺼내고, [그림 6]과 같이 코딩합니다. 엔트리 시작화면 벽은 시작화면 테두리입니다. 시작화면 밖으로 완전히 벗어난 오브젝트는 벽에 닿아있지 않다고 판정됩니다. 만약 벽에 닿았는지 확인하고 바로 삭제한다면 시작화면 안에 들어오기도 전에 시작화면 테두리(벽)에 닿아 삭제될 것입니다. 그래서 시작화면에 들어오고 있는지, 완전히 들어왔는지, 반대편 벽에 닿았는지 순차적으로 확인한 후에 삭제해야 합니다.

김지원 네이버커넥트재단 연구원

위방향 화살표