메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

로그인
  • ID/PW찾기
  • 인증메일재발송

logo

  • 제품 소개
    • 아두이노
      • WAT-AK133
      • WAT-SK114
      • 아두이노 UNO
      • 아두이노 자료실
    • AVR
      • AVR 모듈
      • AVR-ISP USB 용
      • AVR 모듈 추가
      • AVR 자료실
    • 정전류 모듈
      • 정전류 모듈(12V 이하)
      • 정전류 모듈(40V 이하)
    • 실험 모듈
      • 스텝모터 모듈
      • 키 매트릭스
      • 캐릭터 LCD
      • 실험 모듈 자료실
  • 자료실
    • 제품 자료실
    • 전자/회로/MCU
      • OrCAD
      • 하드웨어 일반
      • STM32 자료
      • 저항 읽기
    • 프로그래밍
      • C/C++/MFC
      • C# .NET
      • 프로세싱
      • 시리얼통신
      • 테트리스
      • 웹 프로그래밍
      • 안드로이드
      • UTF8 변환
    • 소프트웨어
      • 소프트웨어 일반
      • 유틸리티
    • 파일 자료실
  • 고객센터
    • 공지사항
    • 개발 의뢰(HW,SW)
    • 문의 하기
    • 1:1 문의
    • 개발 의뢰
  • 쇼핑몰
  • >자료실
  • >프로그래밍
  • >프로세싱

자료실

  • 제품 자료실
  • 전자/회로/MCU
  • 프로그래밍
    • - C/C++/MFC
    • - C# .NET
    • - 프로세싱
    • - 시리얼통신
    • - 테트리스
    • - 웹 프로그래밍
    • - 안드로이드
    • - UTF8 변환
  • 소프트웨어
  • 파일 자료실

문의(질문)하기

문의하기
프로세싱
  • >자료실
  • >프로그래밍
  • >프로세싱
Home
T기본글꼴
  • 기본글꼴✔
  • 나눔고딕✔
  • 맑은고딕✔
  • 돋움✔
✔ 뷰어로 보기
2018.06.21 14:26

[WAT-JS539]조이스틱에 연결하여 캐릭터 움직이기

WhiteAT
조회 수 1,439 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

가 위로 아래로 인쇄 목록
?

단축키

Prev이전 문서

Next다음 문서

가 위로 아래로 인쇄 목록

아두이노 보드로 컴퓨터 화면 제어

[WAT-JS539] 조이스틱 게임 실험 키트 예제 중 조이스틱으로 캐릭터는 제어하는 예제입니다.

 

준비

실험에 사용할 WAT-JS539 보드를 컴퓨터에 USB 케이블로 연결합니다.

 

 

소스코드

아두이노 코드

최신 소스코드는 [파일]=>[예제]=>[WhiteAT UNO]=> [JS539] => [11_JS539_1]  에 있으며
라이브러리는 아두이노 개발환경  을 참조하세요

/*

	WAT-JS539 조이스틱 게임 실험 모듈로
	조이스틱 움직임과 버튼으로 간단한 게임 가능한 예제

보드:
	WAT-JS539 조이스틱 (WAT-JS539) 모듈 : https://kit128.com/goods/view?no=539

   
WAT-JS539 설명
	출처: https://docs.whiteat.com/?p=6412

*/


#define DELAY 400

#define PIN_ANALOG_X 0
#define PIN_ANALOG_Y 1

#define BUTTON_UP 2
#define BUTTON_RIGHT 3
#define BUTTON_DOWN 4
#define BUTTON_LEFT 5
#define BUTTON_E 6
#define BUTTON_F 7

void setup()
{

	Serial.begin(115200);

	pinMode(BUTTON_UP, INPUT);
	digitalWrite(BUTTON_UP, HIGH);

	pinMode(BUTTON_RIGHT, INPUT);
	digitalWrite(BUTTON_RIGHT, HIGH);

	pinMode(BUTTON_DOWN, INPUT);
	digitalWrite(BUTTON_DOWN, HIGH);

	pinMode(BUTTON_LEFT, INPUT);
	digitalWrite(BUTTON_LEFT, HIGH);

	pinMode(BUTTON_E, INPUT);
	digitalWrite(BUTTON_E, HIGH);

	pinMode(BUTTON_F, INPUT);
	digitalWrite(BUTTON_F, HIGH);
}

// 123,123,1,1,1,1,1,1  형태로 전송
String strSend = "";
void loop()
{
	strSend = "";

	strSend += analogRead(PIN_ANALOG_X);
	strSend += ",";
	strSend += (1023 - analogRead(PIN_ANALOG_Y));


	strSend += ",";
	if (digitalRead(BUTTON_UP) == LOW) {
		strSend += "1";
	}
	else
	{
		strSend += "0";
	}

	strSend += ",";
	strSend += digitalRead(BUTTON_RIGHT) == LOW;

	strSend += ",";
	strSend += digitalRead(BUTTON_DOWN) == LOW;

	strSend += ",";
	strSend += digitalRead(BUTTON_LEFT) == LOW;

	strSend += ",";
	strSend += digitalRead(BUTTON_E) == LOW;

	strSend += ",";
	strSend += digitalRead(BUTTON_F) == LOW;


	Serial.println(strSend);
	delay(100);

}



프로세싱 코드
// Arduino joystick play Example #01
//
// KIT set
// WAT-JS539 : https://kit128.com/goods/view?no=539


import processing.serial.*;
Serial port;

int WIDTH = 680;
int HEIGHT = 853;

int lastTime=0;
int setTimer = 10;

 Enemy enemy = new Enemy();
 
String myString = null;

PImage  imageFly = new PImage() ;

PImage  imageFire = new PImage() ;
int gun_x = 0;
int gun_y = -110;

PImage  imageBG = new PImage() ; 
int x,y;

void setup() {
  size(680,853); 
  x = WIDTH/2-80;
  y = HEIGHT/3*2-80;
 imageFly = loadImage("fly.png");
 imageFire = loadImage("gun.png");
 imageBG = loadImage("bg.jpg");
 

 println("Available serial ports:");
 println(Serial.list());
 port = new Serial(this, Serial.list()[0], 115200);
 
 image(imageBG,0,0,WIDTH,HEIGHT);   
 surface.setTitle("Arduino Joystick Play Example #01 - http://docs.WhiteAT.com");
   
}

void draw() 
{
  boolean is_refresh = false;
  
  int passedTime = millis() - lastTime;
  if(passedTime > setTimer)
  {
      lastTime =  millis();
      gun_y -=20;
    
     is_refresh = true;

     enemy.move();
     if(enemy.IsHit(gun_x,gun_y+20))
     {
       enemy.moveFirst();
       
       gun_y = -100;
     }       
  }
  
  int iTemp =0;
  
  myString ="";
  while (port.available() > 0) {
    myString = port.readStringUntil(10);
  }
  myString = myString.replace('\n', ' ');
  myString = trim(myString); 
   
   if(myString.length()>0)
   println(myString);
   
                               
                                           //   x,  y,A,B,C,D,E,F
  String[] list  = split(myString, ",");   // 500,503,1,1,1,1,1,1
  
  if(is_refresh)
  {
    image(imageBG,0,0,WIDTH,865);
    image(imageFire,gun_x,gun_y);  
  }
  
  if(list.length==8)
  {   
      
    // x
    iTemp =  Integer.parseInt(list[0]);
    if( iTemp<=400) x-=50;   
    else if( iTemp>=600) x+=50;
    
   if(x<0) x+=50;
   else if(x>WIDTH-imageFly.width) x-=50;
   
    // y
    iTemp =  Integer.parseInt(list[1]);
    if( iTemp<=400) y-=50;  
    else if( iTemp>=600) y+=50;
    
    if(y<0) y+=50;
    else if(y>HEIGHT-imageFly.height) y-=50;
   
     // gun
    if(1== Integer.parseInt(list[5]))
    {
      if(gun_y<0)
      {
       gun_x = x  +(imageFly.width  -imageFire.width)/2;
       gun_y = y;
      }
    }     
  }
   
  image(imageFly ,x,y);

  enemy.draw();
    
  PFont f= createFont("Arial",16,true);   
  textFont(f,32); 
  text("WhiteAT.com, KIT128.com",20,30);      
} 

class Enemy
{
  PImage  image  =null;
 
  int x=50;
  int y=0;
  
  public boolean IsHit(int _x,int _y )
  {
     if ( x < _x  && _x < (x + image.width) && y < _y && _y < (y + image.height) )
      return true;
    else
      return false;  
  }

  public void move()
  {
    y+=10;
    
    if(y >800)
    {
       moveFirst();
    }
  }
  
  public void moveFirst()
  {
    y=0;
    x= (int)random(60)*10;
  }
  
  public void draw()
  {
    if(image ==null)
      image  = loadImage("ghost.png");
    image(image,x,y);
  } 
}

결과 화면

적군이 랜덤 위치에서 내려오며 조이스틱으로 비행이 조종이 가능합니다. 버튼을 누르면 미사일로 발사 됩니다.


 

 

 

Prev processing (쉬운 프로그래밍 언어) processing (쉬운 프로그래밍 언어) 2018.06.15by WhiteAT 프로세싱에서 키보드로 캐릭터 움직이기 Next 프로세싱에서 키보드로 캐릭터 움직이기 2018.06.15by WhiteAT
0 추천 0 비추천
Facebook Twitter Pinterest Band KakaoStory Kakao
위로 아래로 인쇄 목록
에디터 선택하기
✔ 텍스트 모드 ✔ 에디터 모드
?
에디터 사용하기 닫기

  • List
  • Zine
  • Gallery
  • FirstThumb

    3 processing (쉬운 프로그래밍 언어) file
    1,243Views

    2 [WAT-JS539]조이스틱에 연결하여 캐릭터 움직이기 file
    1,439Views

    1 프로세싱에서 키보드로 캐릭터 움직이기 file
    2,525Views
목록
쓰기
Board Pagination Prev 1 Next
/ 1
WhiteAT
  • 회사소개
  • 공지사항
  • 제품 자료실
  • 오시는 길
  • 쇼핑몰
  • 사업자등록번호:106-11-55283
    주소: 서울 구로구 고척로33길20 지층101호
    TEL: 070-4412-5754 ( 모든 제품은 http://kit128.com 에서 구매하실 수 있습니다.)
    EMAIL:help@whiteat.com
  • Copyright (c)화이트앳 All Right Reserved.
  • 2sisstore