프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

아두이노 자세 조절 장치 (feat. 터치스크린)

2016-02-27 18:45:02

프로젝트 개요

저항막 터치스크린을 이용해서 구슬이 굴러 떨어지지 않도록 한 작품입니다.

 

최종 결과



 

만드는 방법

1. 무빙 프레임 만들기

상단의 나무판은 약간 덜렁거리도록 만들어야 합니다.

터치스크린은 저항막 방식 4단자 규격이면 어떤 것이든 사용 가능합니다. 여기서는 닌텐도3DS용 부품을 사용했습니다.

 

연결 방법

아두이노 보드 소스 (인용시 출처를 명시해 주세요.)


#include <Servo.h>
Servo myservo[2];

int xStable = 90;
int yStable = 90;
int xPosition1 = 0;
int yPosition1 = 0;
float xVelocity = 0;
float yVelocity = 0;

int xPosition = 512;
int yPosition = 512;

void setup()
{
  Serial.begin(9600);

  myservo[0].attach(6);
  myservo[1].attach(7);
  myservo[0].write(xStable);
  myservo[1].write(yStable);
}

void loop()
{
  xPosition = 512;
  yPosition = 512;
  
  pinMode(A1, OUTPUT);
  pinMode(A3, OUTPUT);
  pinMode(A0, INPUT);
  pinMode(A2, INPUT);
  digitalWrite(A1, LOW);
  digitalWrite(A3, HIGH);

  int xPosition0 = xPosition1;
  xPosition1 = (analogRead(A0) + analogRead(A2)) / 2;

  int xAdj = 0;
  if (xPosition0 < 1023 && xPosition1 < 1023)
  {
    xVelocity = xPosition1 - xPosition0;
    xAdj = round((xPosition1 - xPosition) / 8.0 + xVelocity * 1.25);
  }

  pinMode(A0, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(A1, INPUT);
  pinMode(A3, INPUT);
  digitalWrite(A0, LOW);
  digitalWrite(A2, HIGH);

  int yPosition0 = yPosition1;
  yPosition1 = (analogRead(A1) + analogRead(A3)) / 2;

  int yAdj = 0;
  if (yPosition0 < 1023 && yPosition1 < 1023)
  {
    yVelocity = yPosition1 - yPosition0;
    yAdj = round((yPosition1 - yPosition) / 8.0 + yVelocity * 1.25);
  }

  myservo[0].write(xStable + yAdj);
  myservo[1].write(yStable + xAdj);

  delay(20);
}


 

자바실험실