?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

SPI TFT LCD 128x128 에 대해서 질문합니다!

페이지 정보

작성자 칼국수 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-03-28 20:04 조회729회 댓글2건

본문

질문 : 제가 지금 독학을 하고있는데요! 이부분은 잘 몰라서 질문드립니다.

제 TFT LCD 는 128X160 이 아니어서 그런지 원을 그리고 좌표를 X : 65 , Y : 65 정도로 설정하면 중심에 원이 생길줄 알았더니 중심보다는 더 위에 생겼습니다.. 제가 그래서 조이스틱으로 원을 움직이는 소스를 만들어서 좌표값을 얻어보니.. 화면 좌측 상단이   X : 0 , Y : 0 일줄 알았는데 X : 35 Y : 5 정도 되더라구요.. 그리고 그위로더 올라가 보니 Y 값은 -로 가면서 화면 맨 아래에서 다시 위로 올라옵니다.. 이거 어찌된 일인지 모르겠습니다...ㅠㅠ 도와주세요!... 제가 드린 소스코드로 128X128 SPI TFT LCD 환경에서 하게 되면 어느쪽은 또 위로 더 올라가 Y 값이 - 가 됩니다.

이거참... 미치겠군요..ㅠㅠ

<소스코드>

#include <SPI.h>
#include <TFT.h>

#define CS 10 //기본설정
#define DC 9
#define RESET 8

#define joystick_x 0 //조이스틱 설정
#define joystick_y 1
#define joystick_z 2

int x = 70; // 공 좌표값
int y = 70;
int z = 0;

TFT myScreen = TFT(CS,DC,RESET);

void setup() { // 기초 설정
  Serial.begin(9600);
  pinMode(joystick_z, INPUT);
  myScreen.begin();
  myScreen.background(0,0,0);
  delay(1000);
}

void checkPosition(){ // 시리얼 모니터에 X,Y값을 반환하는 함수
  Serial.print("X : ");
  Serial.print(x);
  Serial.print(" Y : ");
  Serial.print(y);
  Serial.print("\n");
}

void drawCircle(){ // 좌표값을 받아 공을 그리는 함수
    myScreen.stroke(255,255,255);
    myScreen.fill(0,255,0);
    myScreen.circle(x, y, 5);
}

void setCirclePos(int value_x, int value_y) { // 공 + 조이스틱의 값 을 이용하여공을 
    x = x + (10 * value_x);                      //어디에 그릴지 좌표 설정
    y = y + (10 * value_y);

    if(x >= 155){
      x = 155;
    }else if(x <= 0){
      x = 0;
    }else if(y >= 120){
      y = 120;
    }else if(y <= 0){
      y = 5;
    }
}

void loop() {

 int x = analogRead(joystick_x);
 int y = analogRead(joystick_y);
 int z = analogRead(joystick_z);

 if(x <= 400){ // 조이스틱 값을 1 , 0 , -1로 반환
  x = 1;
 }else if(x >= 600){
  x = -1;
 }else{
  x = 0;
 }

 if(y <= 400){
  y = 1;
 }else if(y >= 600){
  y = -1;
 }else{
  y = 0;
 }

 if(z <= 5){
  z = 0;
 }else{
  z = 1;
 }
 
 setCirclePos(x, y); // 원 그릴 위치 구하고
 checkPosition(); // 그 위치를 시리얼 모니터에 띄우고
 drawCircle(); // 원을 그리고
 myScreen.background(0,0,0); // 화면을 CLEAR 한다..

}

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

TFT 라이브러리 파일에 화면의 가로, 세로 사이즈 설정이 있을 것 같습니다. TFT.h 파일을 열어서 관련된 설정이 있는지 보고 수정해서 실행해보세요.

칼국수님의 댓글

칼국수 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

화면이 위아래 는 잘막아지는데 128x128 이 구간이 왼쪽으로 이동한거같습니다..
위아래는 막히는데 왼쪽으로는 더가지고 오른쪽으로는 더 못가고... 어쩌죠...