아두이노/아두이노 일반

구글 크롬 T-REX Runner 게임 자동으로 아두이노

아크리엑터 2020. 4. 10. 00:42
반응형

크롬 브라우저의 네트웍이 끊어졌을 때, 나타나는 공룡이 뛰어다니는 게임이 있다.

 

  

 

선인장이 나오면 뛰어넘는 게임인데, 아두이노를 이용해서 게임을 대신해주는 동영상을 보고, 아이에게 보여주려고 만들어 봤다.

간단히 CdS(조도센서)와 서보모터 만으로 간단히 만들수 있고, 애들도 흥미를 많이 보일 것 같다. 

 

사용한 부품은 다음과 같다.

  * 아두이노 Pro mini (다른 것으로 해도 무관)

 

 

  * CdS (황화카드뮴, 조도센서)

 

 

  * 저항 33k옴

  * 서보모터 SG90

 

 

 

회로 구성은 조도센서와 저항을 연결하여 CdS의 값을 읽어오도록 하고, 그 결과에 따라서 서보모터를 작동할 수 있게 연결했다.

 

 

시험을 해보니, 모니터 밝기에 따라 CdS 에서 읽어들이는 값이 다른 것을 확인하였다.

또한, CdS에서 얻어온 값이 조금씩 바뀌는 경우가 생겼다. 이것 때문에 두점의 값의 평균을 구해보고, 세점의 값을 평균을 내보고 했는데, 깔끔하게 선인장이 있는 변화를 인식하지는 못하였다.  시험을 해보면서 이 오차를 줄일수 있는 방법을 찾아야 겠지만... 오늘은 그만...

#include <Servo.h>

#define PIN_CDS   A0
#define PIN_SERVO 4

Servo motor;

int cds1, cds2, cds3;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(PIN_CDS,   INPUT);
  motor.attach(PIN_SERVO);
  motor.write(90);

  cds1 = cds2 = 0;
  delay(1000);
}

void loop() {
  // put your main code here, to run repeatedly:

  cds3 = analogRead(PIN_CDS);

  if (cds1 == 0) cds1 = cds3;
  if (cds2 == 0) cds2 = cds3;

  int cds = (cds1 + cds2 + cds3 ) / 3;
  
  Serial.println(cds);

  if (cds >= 387) {    
    motor.write(70);
    delay(500);
    cds1 = cds2 = cds3 = 0;
    motor.write(90);
   }
  cds1 = cds2;
  cds2 = cds3; 
  delay(100);
}

 

모니터에 붙인 CdS의 위치는 점프를 하는 위치와도 관련되니 잘(?)붙여야한다. 아래 사진 처럼 테이프로 붙여봤다..

 

 

서보모터는 스페이스바를 누를수 있도록 테이프로 붙여봤으나 테이프의 힘이 약해서인지 자꾸 떨어져서 손으로 눌러주도록했지만, 작동은 된다.

만든 것을 애들에게 보여줬더니... 좋아하지를 않네.. 밤에는 시끄럽게하지 말고 자라고 한다.. 쩝.

 

반응형