▶ 이 가이드를 따라하면
- 인터넷에서 좋은 호응을 얻었던 Chrome브라우저의 t-rex game automation을 따라해볼 수 있다.
▶ 부품 설명 및 회로 구성
최근 간단하면서도 재미있는 arduino DIY를 보았는데, 바로 크롬 브라우저의 공룡 게임 자동화이다.
바로 이녀석이다. 화면에 직접 조도센서를 붙여서 서보 모터로 스페이스키를 자동으로 눌러서 점프시켜준다.
https://twitter.com/null4bl3/status/1247032404990210053?s=20
cds라는 조도 센서(하나에 수십원 정도밖에 안하는)와 서보모터를 간단히 결합하면 된다. 서보모터에 대한 강의는 본 블로그에도 존재한다.
https://bbangpan.tistory.com/6
cds 센서는 10k옴 저항과 함께 사용할 수 있는데, 아래를 참고하면 상세 내용을 알 수 있다.
https://kocoafab.cc/tutorial/view/356
여기서는 곧바로 간단하게 위 두가지를 결합시키자. 아래와 같이 조립된다.
구성도이 복잡해보이지만, 서보모터의 5V, GND를 아두이노 보드에 연결하고 제어핀을 9번 pin에 꼽고, cds센서는 5V, GND를 10K옴 저항과 조도 센서를 직렬 연결한 아래 위에 연결한 후, 조도 센서와 저항의 가운데에 선을 따서 A0 측정핀에 연결하였다.
cds 센서 부위를 좀더 확대해보면 위와 같다. cds센서와 아두이노 보드 연결은 위의 조도센서 상세 링크를 참조한다.
cds 센서를 적당한 도구를 이용해 모니터에 붙이고 t-rex game을 연결한다. 장애물이 지나갈때 해당 모니터 작은 부위가 어두워지는 것을 cds sensor로 감지하는 것이다. t-rex game은 크롬브라우저에서 랜선을 뽑으면 볼 수 있다.
소스 코드는 아래를 사용한다. 아래에 주의한다.
https://github.com/bbangpan/bbangpan.com/blob/master/neibc_servo_light/neibc_servo_light.ino
A) cds 센서의 정확도가 이 장치의 안정성을 좌우한다. 안정성이 떨어지면 점프 해야할 곳에서 점프를 하지 않고, 점프를 하지 말아야 할 곳에서 점프를 하게 된다. 여기서는 3개의 값을 읽어 평균하여 사용하니 조금 나았다.
B) cds 센서는 어두울수록 값이 높아진다. 하기의 threshold값은 (jump기준이 되는 어두운 값과, 평소 흰색 배경일때의 값) 모니터 밝기나 상황에 따라 조절해야 한다.
소스도 복사해서 붙여넣어 보자.
/* Originally posted on www.bbangpan.com
Program Description: Servo motor & light sensor test code (t-rex game automation imitation)
Needed library : Servo(Arduino's default library)
Tested on : Arduino 1.8.5, Arduino UNO R3, Small size servo motor + cds sensor + 10k ohm register
Copyright (c) 2020 www.bbangpan.com. All right reserved.
This program can be used for any non-commercial purpose freely. */
#include
int servoPin = 9;
int cdsPin = A0;
int jump = 0;
int readytojump = 0;
int cdst1 = 0;
int cdst2 = 0;
Servo servo;
int angle = 0; // servo position in degrees
void setup() {
servo.attach(servoPin);
Serial.begin(9600);
servo.write(0);
delay(1000);
}
void loop() {
int cdst3 = analogRead(cdsPin);
// averaging past three values
int cds = (cdst1 + cdst2 + cdst3) / 3 ;
cdst1 = cdst2;
cdst2 = cdst3;
if (cds > 206 && readytojump == 1) {
jump = 1;
readytojump = 0;
} else if(cds < 190) {
readytojump = 1;
jump = 0;
}
Serial.print("cds = ");
Serial.println(cds);
if(jump == 1) {
jump = 0;
Serial.println("JUMP!");
servo.write(80);
delay(150);
servo.write(0);
}
}
그러면 아래와 같이 선인장이 나타나면 스페이스 키를 눌러줘서 공룡이 잘 뛰는 영상을 만들어낼 수 있다.
고정만 잘하면 몇가지 재미있는 응용을 만들 수 있겠다. 스마트폰 게임 노가다에도 쓸 수 있지 않을까?
▶ 구매 가이드
서보모터 : http://www.aliexpress.com/wholesale?SearchText=arduino+servo
(시험용의 경우는 소형(micro)으로 구매하기를 권고한다. 중형이 넘어가면 서보모터 드라이버가 별도로 필요하다)
cds 센서 : https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20200408083733&SearchText=cds+sensor
▶ 강의 키워드
서보 모터, servo motor, 아두이도, Arduino, t-rex, trex, automation, 자동화, cds sensor, 공룡 게임, 크롬
'아두이노 응용' 카테고리의 다른 글
[아두이노/Blynk] 스마트폰 앱으로 인터넷을 통해 Arduino를 제어해보자 (0) | 2019.08.07 |
---|---|
[아두이노/초음파센서/숫자LED] Arduino 초음파 센서와 TM1637 4 digit 거리 표시기 (0) | 2019.08.04 |
[아두이노/WiFi/서보모터] Arduino WeMos D1 WiFi (ESP8266) 호환 보드와 휴대폰 브라우저를 통한 서보 모터 구동 (6) | 2019.08.04 |
[응용/접근 감지 전등] 초음파 센서를 통해 전등을 켜보자 (0) | 2016.04.19 |
[응용/전자기장검출] 전자기장 감지기(EMF detector)를 만들어보자 (2) | 2015.11.11 |
[프로젝트] HM-10모듈과 수은전지+배터리 홀더로 만드는 초소형 iBeacon (10) | 2015.07.17 |
[프로젝트] 전자시계 / 실시간 시계 모듈(RTC breakout/DS1307 or DS3231)과 4 digits 디스플레이로 구현하자 (0) | 2015.04.17 |
[프로젝트] 간단한 단거리 무선 통신(433/315Mhz)으로 구현하는 실내외 원격 온습도계 디스플레이 프로젝트 (2) | 2015.02.09 |