안녕하세요:)
오늘 만들어볼건 간단한 미니 게임인데요

다들 오락실에서 이렇게 생긴 농구 게임기 보신적 있으시죠?
오렌지보드와 I2C LCD, 적외선 센서, 피에조 부저, 스위치를 이용해서
집에서 할 수 있는 간단한 농구게임 만드는 법을 소개해드릴게요 ( ღ'ᴗ'ღ )
우선 게임이 어떤식으로 동작하는지 보여드릴게요 !
이렇게 적외선 센서로 1점 슛, 3점 슛을 인식하면
피에조 부저로 소리와 함께 LCD에 점수가 표시되는 농구게임이랍니다 (๑˃̵ᴗ˂̵)و
부품목록
| no |
부품명 |
수량 |
상세설명 |
| 1 |
오렌지보드 |
1 |
아두이노 UNO |
| 2 |
브레드보드 |
1 |
|
| 3 |
점퍼케이블 |
19 |
|
| 4 |
적외선 센서 |
3 |
|
| 5 |
I2C LCD |
1 |
|
| 6 |
스위치 |
1 |
|
| 7 |
피에조 부저 |
1 |
|
| 8 |
골판지,종이컵, 병뚜껑,나무젓가락,탁구공등 |
|
농구장 만들기 재료 |
하드웨어 making
| |
농구장 제작하기 |
|
 |
 |
 |
|
1. 밑판이 될 골판지를 잘라 준비합니다.
|
2. 밑판에 농구공이 내려올 길을 만들어 줍니다.
* 탁구공의 크기보다
길을 넓게 해주셔야합니다
|
3. 공이 옆으로 빠지지않도록 옆면을 만들어주고
밑판을 비스듬히 기울여 붙여주세요.
* 공이 내려올 수 있게
경사를 어느정도 주세요
|
 |
 |
 |
|
4. 내려오는 공을 받을 수 있도록
공을 보관할 받침을 붙여줄게요.
* 공을 보관해야 하므로
탁구공보다 크게 해야겠죠?
|
5. 공을 발사할 발사대를 위에 얹어주고,
농구 골대를 붙일 판까지 붙여주면 외관 완성 !
* 자세한 농구대만들기 과정은 아래에 유튜브 링크를 참조해주세요
|
6. 종이컵 밑면을 자르고
적외선 센서를 붙여
떨어지는 공을 인식할 수 있게 해주세요.
|
 |
 |
 |
| 7. 골판지를 잘라 농구골대의 형태로 만들어줍니다. |
8. 앞에 두개는 1점 골대,
맨 뒤쪽의 골대는 3점골대로 만들어줬어요.
|
9. 점수를 볼 수 있게 LCD를 상단에 붙입니다. |
 |
 |
 |
|
10. 발사대 옆에 게임 점수를
리셋시켜줄 스위치를 붙여줍니다.
|
11. 피에조부저는 보드에
11번핀과 GND에 바로 연결해줍니다.
|
12. 농구공처럼 선을 그려준 탁구공까지 넣으면
농구장 완성!
|
저는 해당 영상을 보고 만들었구요 (https://youtu.be/_wNtNtOlJQk)
조금 더 간단하게 농구대를 만들고 싶으신분은 이 링크를 봐주세요! (https://youtu.be/ChqmwdnTWb0)
사진으로 잘 이해가 안가신다면
위 링크들을 참고하셔서 농구대를 제작해보세요 !
| 브레드 보드 레이아웃 |
 |
소프트웨어 coding
-
#include <LiquidCrystal_I2C.h>
-
-
int score = 0; // 점수 초기화
-
int gamesound[] = {523,784,698,659}; // 게임 리셋 사운드
-
int goalsound[] = {589,523,349}; // 1점 골 사운드
-
int goalsound3[] = {784,880,988,880,784}; // 3점 골 사운드
-
-
-
LiquidCrystal_I2C lcd(0x3F,16,2); // 16*2 LCD
-
-
void setup()
-
{
-
pinMode(2, INPUT); // 1점 골대_왼쪽 적외선 센서 입력으로 받음
-
pinMode(3, INPUT); // 1점 골대_오른쪽 적외선 센서 입력으로 받음
-
pinMode(4, INPUT); // 3점 골대 적외선 센서 입력으로 받음
-
pinMode(11, OUTPUT); // 피에조 부저 출력
-
pinMode(5, INPUT_PULLUP); // 스위치 풀업 저항으로 입력받음
-
lcd.init();
-
lcd.clear();
-
lcd.print("Score: ");
-
lcd.print(score);
-
lcd.backlight();
-
}
-
-
void loop()
-
{
-
int noGoal_1 = digitalRead(2);
-
int noGoal_2 = digitalRead(3);
-
int noGoal_3 = digitalRead(4);
-
int newgame = digitalRead(5);
-
-
if(newgame==0) // 스위치가 눌리면 게임 초기화
-
{
-
score=0;
-
lcd.clear();
-
lcd.setCursor(0,0);
-
lcd.print("NEW GAME !");
-
lcd.setCursor(0,1);
-
lcd.print("Score: ");
-
lcd.print(score);
-
delay(1000);
-
-
for(int i=0;i<4;i++)
-
{
-
tone(11,gamesound[i],200);
-
delay(150);
-
}
-
}
-
-
-
if ( noGoal_1==1 || noGoal_2==1 || noGoal_3==1 ) // 골이 없을 때
-
{
-
lcd.clear();
-
lcd.setCursor(0,0);
-
lcd.print("CHEER UP !");
-
lcd.setCursor(0,1);
-
lcd.print("Score: ");
-
lcd.print(score);
-
}
-
-
if ( noGoal_1==0 || noGoal_2==0 ) // 1점 농구대에 골이 들어갔을 때
-
{
-
score++;
-
lcd.clear();
-
lcd.setCursor(0,0);
-
lcd.print("Goal !");
-
lcd.setCursor(0,1);
-
lcd.print("Score: ");
-
lcd.print(score);
-
-
for(int i=0;i<3;i++)
-
{
-
tone(11,goalsound[i],200);
-
delay(150);
-
}
-
delay(500); // 중복 점수 방지 지연
-
}
-
-
-
if ( noGoal_3==0 ) // 3점 농구대에 골이 들어갔을 때
-
{
-
score+=3;
-
lcd.clear();
-
lcd.setCursor(0,0);
-
lcd.print("3Points !");
-
lcd.setCursor(0,1);
-
lcd.print("Score: ");
-
lcd.print(score);
-
for(int i=0;i<5;i++)
-
{
-
tone(11,goalsound3[i],200);
-
delay(100);
-
}
-
delay(500); // 중복 점수 방지 지연
-
}
-
delay(100); // 0.1초마다 센서 확인
-
-
}
위 소스코드가 이해가 잘 안가신다면 코코아팹의 각 센서 튜토리얼을 한 번 보시면 도움 될 것같아요
동작영상
이렇게 몇가지 센서와 재료만으로 오락실에서 할 수 있는 농구게임을 만들어봤는데요
원하는대로 외형과 농구대의 개수를 변형해 재밌는 농구게임 만들어보세요 '◡'✿
세그먼트와도 연결하여 타이머를 설정해 시간 제한을 두거나
최고점수를 기록하는 방식으로도 응용이 가능할것같네요 !