Table of Contents

Bluetooth Snake Game

Contact: Raducanu Constantin

Introducere

Proiectul meu urmareste implementarea notoricului joc Snake. Pentru a aduce un nivel in plus de dificultate proiectului m-am gandit ca acesta sa fie controlat prin Bluetooth-ul telefonului mobil. Daca imi va ramane timp si proiectul initial va functiona, atunci voi incerca sa implementez si varianta multiplayer.

Descriere generală

Schema Bloc

Jucatorul se va connecta prin Bluetooth la modul HC-O5, acesta va trimite datele spre ATMEGA, care va interpreta miscarea si o va afisa pe ecran.

Hardware Design

Lista piese:

Electric Scheme

Photos

Software Design

Mediu de dezvoltare

Pentru scrierea codului am folosit editorul de atom si un Makefile pentru compilare in linia de comanda.

Implementare

Pentru implementarea jocului in sine m-am folosit de o masina de stari, care sa reprezinte fiecare stare a jocului. Pentru comunicarea cu modului de Bluetooth m-am folosit de protocolul USART si de o aplicatia in Android. Pentru partea de grafica m-am folosit de controlerul ST7735R care este utilizat si in laboratorul 5.

Biblioteci folosite
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include <stdbool.h>
#include <inttypes.h>
#include "./usart/usart.h"
#include "./spi/spi.h"
#include "./ST7735R/ST7735R_TFT.h"


Am facut anumite schimbari minore in anumite biblioteci pentru ca nu erau compatibile cu versiunea mea de avr-gcc.
Masina de stari:

while(1) {
    switch(game_status) {
	case STATE_MENU:
		menu_logic();
		break;
	case STATE_GAME_RUNNING:
		game_logic();
		break;
	case STATE_GAME_ENDED:
		end_game_logic();
		break;
	default:
		menu_logic();
		break;
    }
}

Rezultate Obţinute

Proiect a fost finalizat pana la capat si jocul functioneaza exact cum trebuie. Am incercat sa reduc cat mai mult numarul de buguri si a aduc cat mai multe optiuni proiectului. A creat pentru aceasta si un meniu de unde se pot face anumite setari ale jocului precum: alegerea unui anumit level sau a modului de joc.

Concluzii

A fost o experienta foarte frumoasa, chiar daca am avut anumite neplaceri pe parcurs, precum arderea primului LCD. Am invatat foarte multe din acest proiect.

Download

Codul sursa: source_code_snake_bluetooth.zip

Jurnal

aprilie → 6 mai = finalizat placuta
9 mai → 13 mai = cumparat piese necesare
14 mai → 17 mai = am reusit sa ard lcd-ul :(
18 mai → 21 mai = am cumparat alt lcd si am testat toate piesele
21 mai → 24 mai = am scris codul programului

Bibliografie/Resurse

Aplicatia android: https://play.google.com/store/apps/details?id=appinventor.ai_uktagore.Bluetooth1
Biblioteca pentru controllerul de ST7735R: http://cs.curs.pub.ro/wiki/pm/lab/lab6
LCD: https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/1311-modul-lcd-spi-de-18-128x160.html?search_query=lcd&results=176
Bluetooth: https://www.optimusdigital.ro/ro/wireless-bluetooth/153-modul-bluetooth-master-slave-hc-05-cu-adaptor.html?search_query=bluetooth&results=127
Buzzer: https://www.optimusdigital.ro/ro/audio-buzzere/634-buzzer-pasiv-de-5-v.html?search_query=Buzzer&results=35
Breadboard: https://www.optimusdigital.ro/ro/prototipare-breadboard-uri/249-mini-breadboard-colorat.html?search_query=breadboard&results=103
Generate pdf