프로젝트

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

오락실 농구게임 만들기 (LCD/적외선 센서/피에조 부저/스위치)

2019-07-29 16:17:45

안녕하세요:)

 

오늘 만들어볼건 간단한 미니 게임인데요

 

 

다들 오락실에서 이렇게 생긴 농구 게임기 보신적 있으시죠?

 

오렌지보드와 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

  1. #include <LiquidCrystal_I2C.h>
  2.  
  3. int score = 0; // 점수 초기화
  4. int gamesound[] = {523,784,698,659}; // 게임 리셋 사운드
  5. int goalsound[] = {589,523,349}; // 1점 골 사운드
  6. int goalsound3[] = {784,880,988,880,784}; // 3점 골 사운드
  7.  
  8.  
  9. LiquidCrystal_I2C lcd(0x3F,16,2); // 16*2 LCD
  10.  
  11. void setup()
  12. {
  13.   pinMode(2, INPUT); // 1점 골대_왼쪽 적외선 센서 입력으로 받음
  14.   pinMode(3, INPUT); // 1점 골대_오른쪽 적외선 센서 입력으로 받음
  15.   pinMode(4, INPUT); // 3점 골대 적외선 센서 입력으로 받음
  16.   pinMode(11, OUTPUT); // 피에조 부저 출력
  17.   pinMode(5, INPUT_PULLUP); // 스위치 풀업 저항으로 입력받음
  18.   lcd.init();
  19.   lcd.clear();
  20.   lcd.print("Score: ");
  21.   lcd.print(score);
  22.   lcd.backlight();
  23. }
  24.  
  25. void loop()
  26. {
  27.   int noGoal_1 = digitalRead(2);
  28.   int noGoal_2 = digitalRead(3);
  29.   int noGoal_3 = digitalRead(4);
  30.   int newgame = digitalRead(5);
  31.  
  32.   if(newgame==0) // 스위치가 눌리면 게임 초기화
  33.   {
  34.     score=0;
  35.     lcd.clear();
  36.     lcd.setCursor(0,0);
  37.     lcd.print("NEW GAME !");
  38.     lcd.setCursor(0,1);
  39.     lcd.print("Score: ");
  40.     lcd.print(score);
  41.     delay(1000);
  42.    
  43.     for(int i=0;i<4;i++)
  44.       {
  45.       tone(11,gamesound[i],200);
  46.       delay(150);
  47.       }      
  48.     }
  49.    
  50.    
  51.   if ( noGoal_1==1 || noGoal_2==1 || noGoal_3==1 ) // 골이 없을 때
  52.   {    
  53.   lcd.clear();
  54.   lcd.setCursor(0,0);
  55.   lcd.print("CHEER UP !");
  56.   lcd.setCursor(0,1);
  57.   lcd.print("Score: ");
  58.   lcd.print(score);
  59.   }
  60.  
  61.   if  ( noGoal_1==0 || noGoal_2==0 ) // 1점 농구대에 골이 들어갔을 때
  62.    {  
  63.     score++;
  64.     lcd.clear();
  65.     lcd.setCursor(0,0);
  66.     lcd.print("Goal !");
  67.     lcd.setCursor(0,1);
  68.     lcd.print("Score: ");
  69.     lcd.print(score);
  70.    
  71.     for(int i=0;i<3;i++)
  72.      {
  73.       tone(11,goalsound[i],200);
  74.       delay(150);
  75.       }
  76.     delay(500);   // 중복 점수 방지 지연
  77.     }    
  78.  
  79.      
  80.   if  ( noGoal_3==0 ) // 3점 농구대에 골이 들어갔을 때
  81.    {  
  82.     score+=3;
  83.     lcd.clear();
  84.     lcd.setCursor(0,0);
  85.     lcd.print("3Points !");
  86.     lcd.setCursor(0,1);
  87.     lcd.print("Score: ");
  88.     lcd.print(score);
  89.     for(int i=0;i<5;i++)
  90.     {
  91.       tone(11,goalsound3[i],200);
  92.       delay(100);
  93.     }
  94.     delay(500);   // 중복 점수 방지 지연
  95.     }    
  96. delay(100); // 0.1초마다 센서 확인
  97.  
  98. }

 

위  소스코드가 이해가 잘 안가신다면 코코아팹의 각 센서 튜토리얼을 한 번 보시면  도움 될 것같아요

 

동작영상 

 

 

이렇게 몇가지 센서와 재료만으로  오락실에서 할 수 있는 농구게임을 만들어봤는데요

원하는대로 외형과 농구대의 개수를 변형해 재밌는 농구게임 만들어보세요 '◡'✿

 

세그먼트와도 연결하여 타이머를 설정해 시간 제한을 두거나

최고점수를 기록하는 방식으로도 응용이 가능할것같네요 !

jione