이 모든 것은 "마리오"라는 암흑 시대의 작은 게임으로 시작되었습니다. 작은 작은 남자가 내 공주를 구하기 위해 오리를 타던 시절부터 어둠에 맞서 싸우는 페르시아 (페르시아의 왕자)에서 배회하는 남성적인 잘 생긴 왕자가 될 때까지 내 세상을 구하기 위해 저는 비디오 게임을 좋아하고 자랐습니다. 그러나 그들은 때때로 지루해하고 나는 그것에 덜 관여한다고 느낍니다. 오늘날 고급 게임 콘솔은 가상 게임을 가능하게하고 키보드 나 마우스가 할 수있는 것보다 훨씬 더 게임을 느낄 수 있도록 도와줍니다.
아두 이노 애호가이기 때문에 키보드와 마우스를 사용하여 "Angry Birds" 라는 유명한 게임을하는 데 지 쳤고 Flex Sensor와 Potentiometer를 사용하여 나만의 게임 컨트롤러 를 구축하기로 결정했습니다. 플렉스 센서를 당기면 투석기의 새도 당겨지며 전위차계를 사용하여 발사 방향을 설정할 수 있습니다. 그런 다음 플렉스 센서를 놓으면 새가 시작됩니다. 나는 그것을 매우 즐겼으므로 매우 유사한 것을 만들려고한다면이 튜토리얼이 도움이 될 것입니다. 이 자습서는 전위차계를 사용하여 마우스 커서를 제어 하는데도 유용 합니다.
소프트웨어 및 하드웨어 요구 사항:
소프트웨어:
- Arduino IDE
- IDE 처리
- 컴퓨터에서 Angry Birds 게임
하드웨어:
- Arduino (모든 버전)
- 전위차계
- 플렉스 센서
- 47K 옴 저항기
- 전선 연결
- 브레드 보드
개념 뒤에:
아두 이노 보드는 전위차계와 플렉스 세뇨 르의 값 읽어 정상를 통해 USB의 COM 포트를 통해와 노트북 / PC로 전송을 Serial.write () 함수입니다. 그런 다음 Processing을 사용하여이 정보를 읽고, IDE 처리가 지원하는 Java의 Robot 클래스를 사용하여 마우스 커서를 제어합니다. Flex 센서를 당길 때 마우스 클릭이 이루어지고 당긴 정도에 따라 마우스 포인터가 X 방향으로 이동하도록 처리 IDE를 프로그래밍했습니다. 그런 다음 전위차계의 값을 기반으로 마우스 커서를 Y 방향으로 이동합니다. 이렇게하면 새가 발사되어야하는 방향을 설정할 수 있습니다.
회로도:
Flex Sensor와 Potentiometer를 사용하여 Angry Bird 를 플레이하는 회로 는 쉽습니다.
전위차계와 플렉스 센서를 Arduino의 아날로그 입력 (A0, A1)에 간단히 연결했습니다. Flex 센서의 출력도 47K 풀다운 저항을 사용하여 풀다운됩니다.
브레드 보드에 직접 연결하거나 Perf 보드에 납땜 한 다음 장갑 등으로 조립하여 더 창의적으로 만들 수 있습니다. 다음과 같이 브레드 보드를 사용하여 연결을 수행했습니다.
Arduino 프로그램:
전체 Arduino 코드는 튜토리얼의 끝에 제공됩니다. 몇 가지 중요한 줄이 아래에 설명되어 있습니다.
9600 전송 속도로 작동하도록 프로그램을 초기화하고 Flex 센서 및 전위차계에서 값 읽기를 시작합니다. 아시다시피 serial.write () 함수는 한 번에 한 바이트의 데이터 만 보낼 수 있습니다. 1 바이트는 8 비트이고 2 ^ 8 = 256이므로 0에서 256까지의 값을 보낼 수 있습니다. 따라서 Flex 센서 출력과 Potentiometer Output의 값을 0에서 256으로 압축해야합니다.
이를 위해 Arduino에서 map () 함수를 사용합니다. 플렉스 센서의 모든 값은 5에서 100으로 변환되므로 센서를 구부리면 5에서 증가하고 놓으면 5로 되돌아갑니다. 마우스 클릭을 언급하려면 값 1과 0이 사용됩니다. 1을 보내면 마우스를 누르고 0을 보내면 마우스를 놓습니다.
if (FlexValue> = 65 && FlexValue <= 120) // 내 플렉스 센서가 65에서 120까지 다를 수 있습니다. {FlexValue = map (FlexValue, 120,65,0,100); // 굽힘에 따라 0에서 100으로 변환 if (FlexValue> = 5) // 1과 0은 마우스 클릭에 사용되므로 5부터 시작 {Mclick = true; Serial.write (1); // 1은 마우스 왼쪽 클릭을 위해 전송됩니다. Serial.write (FlexValue); // Flex 값은 X 방향으로 마우스를 이동할 거리입니다.} else {Mclick = false; Serial.write (0);}}
마찬가지로 전위차계의 값은 101에서 200으로 변환되어 map () 함수를 호출하고 아래와 같이 Serial.write () 함수 를 사용하여 랩톱 COM 포트로 전송 됩니다.
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // 기반으로 101에서 201로 변환 Serial.write (potValue); // Pot 값은 마우스를 Y 방향으로 움직일 거리입니다.}
나머지 프로그램은 주석을 사용하여 설명됩니다.
처리 코드:
Processing은 오픈 소스 개발 애플리케이션이며 Arduino 또는 기타 마이크로 컨트롤러를 사용하여 흥미로운 프로젝트를 개발하는 데 쉽게 다운로드하여 사용할 수 있습니다. Processing을 사용하여 이미 몇 가지 프로젝트를 수행했으며 아래 링크를 클릭하여 확인할 수 있습니다.
- 처리를 사용하는 DIY FM 라디오
- Arduino를 사용한 가상 현실 / 제스처 제어
- Arduino를 사용하는 개인 채팅방.
- Processing APP 및 초음파 센서를 사용한 Arduino 레이더 시스템
- Arduino를 사용한 실시간 얼굴 감지 및 추적
- Arduino 및 프로세싱을 사용하는 DIY 속도계
- Arduino 가속도계를 사용한 탁구 게임
- Arduino를 사용하는 Biped 로봇
- DIY Arduino 열 화상 카메라
이 프로젝트에서는 처리 IDE를 사용하여 COM 포트 값을 읽고 COM 포트를 통해받은 값을 기반으로 마우스 포인터를 제어했습니다. 이 Angry Bird 게임 컨트롤러 의 전체 처리 코드 는 아래 링크에서 다운로드 할 수 있습니다.
- 이 Angry Bird 게임 컨트롤러의 처리 코드 (오른쪽 클릭 및 '다른 이름으로 링크 저장')
Arduino 프로그램은이 튜토리얼의 끝에서 찾을 수 있습니다. 처리 코드는 yoggy가 GitHub 페이지에서 제공 한 코드에서 우리 목적에 맞게 수정되었습니다.
COM 포트에서 오는 데이터는 Arduino에서 전송 된 것과 동일한 전송 속도로 읽어야합니다. 또한 장치 관리자를 사용하여 Arduino가 연결된 COM 포트를 확인하십시오. 내 Arduino는 COM3에 연결 되었고 내 컴퓨터 의 0 번째 포트 였고 Arduino의 전송 속도는 9600이므로 코드는 다음과 같습니다.
port = new Serial (this, Serial.list (), 9600);
값을 읽기 시작하면 Arduino에서 보낸 방법에 따라 값을 인식하여 구별합니다. 값은 다시 0에서 100까지 매핑되므로 해당 값을 기반으로 마우스를 제어 할 수 있습니다.
if (port.available ()> 0) {data = port.read (); println (데이터); // COM 포트에서 데이터를 읽어 데이터에 저장} if (data> = 101 && data <= 201) // 값이 101에서 201 인 경우 Potentiometer {Turn = int (map (data, 101,201,0,100)); //이 값을 사용하여 투석기를 돌리십시오.} if (data> = 5 && data <= 100) // 5에서 100 사이의 값이면 Flex Sensor {Pull = int (map (data, 5,100, 0,100));} //이 값을 사용하여 투석기를 당깁니다. if (data == 1) click = true; //이 값을 사용하여 마우스 버튼을 누릅니다. if (data == 0) click = false; //이 값을 사용하여 마우스 버튼을 놓습니다.
데이터를 분류하면 처리중인 로봇 Java 클래스를 사용하여 마우스를 제어 할 수 있습니다. 명령 Robot.mouseMove에서는 (crntX - 풀, crntY + 전원을 켜고); 마우스를 원하는 위치와 선으로 이동하는 데 사용할 수 있습니다. robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); 및 robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); 마우스 버튼을 각각 누르거나 놓는 데 사용할 수 있습니다.
if (click == false) // Flex Sesnor가 풀리지 않은 경우 {crntX = (int) p.getX (); crntY = (int) p.getY (); if (풀> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // 마우스 버튼 놓기} if (click == true) // Flex Sesnor를 당길 때 {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // 마우스 버튼 누르기 robot.mouseMove (crntX-Pull, crntY + Turn); // Flex 및 POT 값에 따라 마우스 이동}}
처리 IDE가 시작되면 아래 그림과 같이 당기기, 회전 및 마우스 클릭 상태를 찾을 수있는 작은 대화 상자도 표시됩니다.
이 세부 사항은 프로그램을 디버그하거나 필요한 데이터를 수정하는 데 사용할 수 있습니다.
일:
제공된 코드를 사용 하여이 앵그리 버드 프로젝트를 작동 시키려면 회로도에 따라 하드웨어를 조립하고 주어진 Arduino 코드를 업로드하십시오. 그런 다음 Arduino가 연결된 COM 포트를 확인하고 처리 코드에서 필요한 변경을 수행하고 처리 스케치를 시작하십시오.
이제 앵그리 버드 게임을 시작하고 커서를 투석기 근처에 놓고 플렉스 센서를 당겨 새를 당기고 전위차계를 사용하여 방향을 설정하십시오. 방향이 설정되면 Flex 센서를 놓습니다.
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
당신의 새는 바로 공중에 던져지고 BOOMM !! 돼지에. 전체 작업은 아래 비디오 에서 찾을 수 있습니다.
프로젝트를 즐겼고 비슷한 것을 만들 수 있기를 바랍니다. 의심스러운 점이 있으면 댓글 섹션에서 저에게 연락하거나 기술 질문에 대한 포럼에 질문을 게시 할 수 있습니다.
이제 저 돼지 상자에 충돌하고 새 알을 되 찾을 시간입니다 !!!!