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);
}
 
			자바실험실
