Mihai-Cătălin BURDUȘELU (78371) - Distributed Tic-Tac-Toe 📱↔️📱

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

  • Proiectul implementeaza jocul X si 0 distribuit pe 2 placute de pm, fiecare utilizator putand sa isi introduca mutarile pe placuta lui.
  • Am plecat de la ideea de a crea un joc pe microcontrollerul ATmega324 si, totodata, de a face 2 placute sa comunice intre ele.
  • Proiectul este util, deoarece permite implementarea unui joc multiplayer pe 2 microcontrollere diferite. Dupa stabilirea comunicatiei dintre acestea, se poate uploada o varietate mare de alte jocuri multiplayer.

Descriere generală

Jocul X si 0 este pentru 2 jucatori. In cadrul proiectului, fiecare jucator va avea o placuta pm prin cadrul careia vor putea introduce mutari.
Fiecare placuta dispune de cate un ecran LCD de Nokia 5110, de un buzzer si de 2 butoane (unul pentru mutarea cursorului si altul pentru fixarea unui simbol)
Comunicatia dintre cele 2 placute este realizata prin interfata seriala.

La finalul jocului fiecare placuta va genera un sunet de victorie/infrangere. 🔊

Schema bloc

Hardware Design

Componente

Index Denumire Cantitate Descriere Observatii
1 PM2018 2 Placuta proiect Lista cu componentele de baza
2 Philips PCD8544 2 LCD Nokia 5110 Datasheet
Pinout
3 FC-07 2 Buzzer cu modul Optimus Digital
4 Rezistenta 1K 2 Rezistenta 0.25W -
5 PUSHBUTTON 4 Butoane de control pentru joc -

Schema electrica

Software Design

1. Mediu de dezvoltare:

Sistem de operare: Windows
Editare: Visual Studio Code
Biblioteci AVR și comunicarea cu placa: WinAVR Toolkit
Încărcarea programului: HID Boot Flash (GUI version)
Creare schemă electrică: Autodesk Eagle
Creare schemă bloc: www.draw.io

2. Biblioteci incluse:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include <stdlib.h>
#include "lcd.h"
#include "usart.h"

3. Funcții de inițializare:

Initializarea porturilor utilizate de LCD:

void lcd_init();

Initializarea jocului cu starea “START”:

void init_game();

Setarea baud rate-ului(9600), formatului frame-ului(8 biti de date, 1 biti de stop, paritate para) si pornirea transmitatorului(TX) si receptorului(RX):

USART0_init();

4. Comunicarea microcontrollerelor:

Comunicarea dintre microcontrollere se realizeaza prin protocolul USART, cele 2 dispozitive fiind unite prin 2 fire(RX-TX, TX-RX).
La inceputul jocului un jucator isi alege caracterul cu care va juca: X sau 0. Din momentul alegerii, cele 2 placute vor fi setate corespunzator: o placuta va fi jucatorul X, iar cealalta va fi jucatorul 0.
Fiecare mutare a cursorului si setare a unui caracter vor fi transmise pe seriala(USART).

Cele 2 microcontrollere trebuie sa aiba acelasi Vcc si acelasi Gnd in momentul in care se unesc prin USART. Acest lucru este asigurat prin conectarea la porturi usb din acelasi laptop sau din aceeasi baterie externa.

Rezultate Obţinute

Asteptarea jucatorilor:

Dupa cateva mutari:

Finalul jocului:

Concluzii

Proiectul a fost interesant, am aplicat ceea ce am invatat in cadrul laboratoarelor si cel mai important am invatat unde sa caut atunci cand vreau sa creez un proiect cu microcontrollere.
Am reusit sa leg 2 placute independente pentru a juca un joc multiplayer.

Download

Bibliografie/Resurse

  • Documentația în format PDF
pm/prj2018/dghilinta/f591ec44f5e5acd39979de1d444ba4f3.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0