라즈베리파이와 아두이노의 소켓 통신을 통해 구현한 장애물 피하기 게임 (22.12.23 ~ 22.12.28)
🎞️ 시연영상
⚬ Arduino IDE
⚬ Ubuntu
⚬ MariaDB
⚬ C++
⚬ Arduino (UNO Board, LCD 16x4, 8x8 Matrix, PS2 Joy Stick, Wifi module, Bluetooth module, Power supply module)
⚬ Raspberry Pi
⚬ React
⚬ <MsTimer2.h>
⚬ <SoftwareSerial.h>
⚬ <LedControl.h>
⚬ <WiFiEsp.h>
⚬ <Wire.h>
⚬ <LiquidCrystal_I2C.h>
1. Set Up
⚬ 시리얼 통신 세팅
⚬ 소켓 연결하고 이벤트 발생시 값을 받아오는 기능
⚬ 블루투스 통신 세팅
⚬ 와이파이 연결 세팅
⚬ LCD 초기화
⚬ 움직임을 인식할 타이머 설정 (기본 1초 주기)
⚬ 장애물을 내려보낼 타이머 설정 (기본 0.1초 주기)
2. Start
⚬ 조이스틱을 3초이상 누르면 값을 전송해 게임을 시작하는 기능
⚬ 시작 값을 읽어와 실행하는 기능
⚬ 상태값과 lcd 값을 초기화 하는 기능
⚬ 게임 생존 시간을 측정하고 전송하는 기능
3. Player Move
⚬ 타이머를 통해 1초 주기로 사용자의 입력을 읽어오는 기능
⚬ 조이스틱의 방향에 따라 사용자의 위치를 이동하는 기능 (+ 양쪽 모서리의 경우 움직이지 않도록 예외 처리)
⚬ 조이스틱 강도에 따라 이동하는 정도를 조절하는 기능
⚬ 움직임을 읽어 정보 전송하는 기능
4. Obstacle Move
⚬ 장애물 시작 위치를 랜덤으로 설정하는 기능
⚬ 장애물이 내려오는 시간 설정 기능 (기본 1초 설정)
⚬ 2칸 크기의 장애물이 정해진 시간을 주기로 한 줄씩 내려오는 기능
⚬ Player와 마주쳤을 경우 장애물을 없애는 기능
⚬ Player와 마주치지 않고 끝까지 내려왔을 경우 장애물을 없애는 기능
5. End
⚬ 생명이 0이 되었을 경우 종료하는 기능
⚬ 플레이한 시간을 Lcd에 표시하는 기능
⚬ 일정 시간 딜레이 후, 다시 게임 시작 화면을 표시하는 기능 (기본 설정 시간 5초)
⚬ 플레이어의 ID와 시간 값을 저장해 웹에 나타내는 기능
⚬ 사용자의 정보가 전달되면 닉네임을 변경해 DB에 수정하여 저장하는 기능
6. Web
⚬ 난이도를 선택할 수 있는 기능 (속도, 장애물 개수 조절)
⚬ 웹에서의 추가기능 구현 (페이징, 동일 아이디 기록 갱신)
⚬ https://github.com/dudwn1814/arduinoGame
⚬ 안영주 - https://github.com/dudwn1814
⚬ 황서영 - https://github.com/Seo0H