Bogdan-Constantin POPESCU - Connect Four

Autorul poate fi contactat la adresa:

Introducere

Ideea inițială a proiectului: implementarea unui joc simplist cu inteligență artificială pe o matrice de LED-uri.

Rezultat: un joc de Connect Four fără inteligență artificială pe un ecran de Nokia 3310.

Inițial, am vrut să implementez un joc de table pe o matrice de leduri, însă datorită dificultăților întâmpinate, am renunțat la implementarea pe matrice de leduri și am creat un joc Connect Four folosind un ecran de Nokia 3310.

Crearea jocului mi-a fost utilă, la sfârșit înțelegând modul de funcționare al unui ecran LCD Nokia. Pentru ceilalți, proiectul reprezintă un joc simplu și portabil.

Jocul Connect four

Connect Four (în română 4-în-linie) este un joc pentru doi jucători într-o matrice cu 6 linii și 7 coloane, în care jucătorii pun de sus, pe rând, discuri colorate de sus într-o coloană. Piesele cad, ocupând următorul spațiu disponibil în coloană. Scopul jocului este acela de a obține 4 piese consecutive de culoarea cu care joci, pe linie, coloană sau diagonală. Pentru mai multe detalii, click aici.

Descriere generală

Diagrama

Imagine cu montajul final

Hardware Design

Listă de piese:

  • Matrice de leduri 16×32 R/G (am ars-o) luată de pe okazii
  • Nokia 3310 LCD (Philips PCD8544, 48 x 84 pixels matrix LCD) imprumutat de la Adrian
  • 5 rezistențe de 3K3
  • 5 rezistențe de 1K8
  • 4 rezistențe de 10k
  • 4 taste
  • 2 diode 1N4148
  • 1 diodă Zener de 3V3
  • 1 condensator de 10µF
  • 12 conectori mamă-mamă

Piesele le-am cumpărat majoritatea de la Syscom, însă conectorii mamă-mamă și condensatorul le-am luat de la alte magazine de electronice de pe Strada Maica Domnului.

Nokia 3310 LCD

Detalii pini

Pin Signal Description Port
1 VDD Power Input. Logic supply voltage range VDD to GND : 2.7 to 3.3 V Power
2 SCLK Serial clock. Input for the clock signal: 0.0 to 4.0 Mbits/s. Input
3 SDIN Serial data. Input for the data line. Input
4 D/C Mode Select. To select either command/address or data input. Input
5 SCE Chip enable input. The enable pin allows data to be clocked in. The signal is active LOW. Input
6 GND Ground Power
7 VOUT Ouptut voltage. Add external 1-10 uF electrolytic capacitor from VOUT to GND Power
8 RES External reset. This signal will reset the device and must be applied to properly initialize the chip. The signal is active LOW. Input

Pentru display am lipit divizoare de tensiune întrucât tensiunea de funcționare a lui este de 3.3V. Pentru fiecare port de Input de mai sus am construit câte un divizor de tensiune folosind două rezistențe (1K8 și 3K3). Astfel reduc tensiunea de la 5V la 3.3V. Între portul VOUT și GND am adăugat un condensator de 10µF. Tensiunea pe care o primește ecranul în VDD este limitată pe rând de două diode 1N4148. Aici am mai adăugat și o diodă Zener de 3.3V, așa am văzut și la colegii din anii trecuți, deși pe Internet nu este specificat în mod explicit acest lucru.

Conexiuni pentru porturile de tip Input:

Nr Signal ATMega port used
1 SCLK PC4
2 SDIN PC3
3 D/C PC2
4 SCE PC1
5 RES PC0
6 LEFT PA0
7 ENTER PA1
8 RIGHT PA2
9 RESET PA3

Software Design

Mediu de dezvoltare (folosit de majoritatea, sugerat și de echipa de PM): Programmers Notepad [WinAVR]

După ce am terminat cu partea hardware, am început să gândesc modul în care voi construi aplicația.
Mai întâi, am luat biblioteca de control pentru LCD de pe Internet (vezi secțiunea de Resurse). După aceasta, am căutat o modalitate de a seta un singur pixel negru (biblioteca oferă suport doar pentru afișare de text la dimensiuni standard).
Ajuns la acest pas, am gândit diagrama de joc:

În continuare nu am întâmpinat dificultăți, reușind să termin de scris codul în doar câteva ore.

Rezultate Obţinute

Jocul este complet funcțional. Iată câteva imagini și videoclipuri.

Videoclip 1:

Videoclip 2:

Concluzii

Proiectul a fost unul interesant. Am învățat cum să lipesc componente, să am MARE grijă cu ce componente am.

O să continui după sesiune să implementez și un bot pentru jucat, eventual cu mai multe niveluri (se știe că jocul are strategie de câștig forțat la cel mai bun joc pentru primul jucător).

Download

Arhivă cu fișierele proiectului.
Arhiva onține biblioteca pentru controlul LCD-ului (puțin modificată) și fișierul main ce conține toată funcționalitatea implementată de mine.

Bibliografie/Resurse

Resurse software

biblioteca pentru LCD

Resurse hardware

Nokia LCD datasheet: Nokia
Magazinul Syscom: Syscom

pm/prj2013/avoinescu/bpopescu_board.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