Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:razvans:tic-tac-toe-on-leds [2023/05/29 00:53]
stefania.dicu1506
pm:prj2023:razvans:tic-tac-toe-on-leds [2023/05/30 11:48] (current)
stefania.dicu1506
Line 13: Line 13:
 În realizarea implementării,​ "tabla de joc" va fi simulată prin existența a 18 LED-uri, câte 1 LED roșu și unul verde pentru fiecare din cele 9 căsuțe. Culoarea roșie va reprezenta mutările jucătorului,​ iar cea verde pe ale computer-ului. Pentru deplasarea pe o anumită căsuță, jucatorul are la dispoziție 5 butoane, constituind mutările: stânga, dreapta, sus, jos, si butonul de OK, ce marchează poziția finală aleasă. În realizarea implementării,​ "tabla de joc" va fi simulată prin existența a 18 LED-uri, câte 1 LED roșu și unul verde pentru fiecare din cele 9 căsuțe. Culoarea roșie va reprezenta mutările jucătorului,​ iar cea verde pe ale computer-ului. Pentru deplasarea pe o anumită căsuță, jucatorul are la dispoziție 5 butoane, constituind mutările: stânga, dreapta, sus, jos, si butonul de OK, ce marchează poziția finală aleasă.
  
-Jucătorul va realiza o mutare, apoi plăcuța își va alege mutarea în următoarea ordine: prima dată va încerca să selecteze cea mai buna poziție pentru a câștiga, apoi va căuta o poziție pentru a pune în dificultate adversarul, iar în final, dacă nu a reușit să facă o mișcare, va selecta o poziție random. Procesul se repetă până când unul dintre playeri câștigă, moment în care se afișează pe ecranul LCD câștigătorul și se aprinde și un LED cu culoarea respectivă. De asemenea, dacă jucătorul a câștigat sau a fost învins, vor porni melodii sugestive în funcție de rezultat.+Jucătorul va realiza o mutare, apoi plăcuța își va alege mutarea în următoarea ordine: prima dată va încerca să selecteze cea mai buna poziție pentru a câștiga, apoi va căuta o poziție pentru a pune în dificultate adversarul, iar în final, dacă nu a reușit să facă o mișcare, va selecta o poziție random. Procesul se repetă până când unul dintre playeri câștigă, moment în care se afișează pe ecranul LCD câștigătorul ​și scorul curent ​și se aprinde și un LED cu culoarea respectivă. De asemenea, dacă jucătorul a câștigat sau a fost învins, vor porni melodii sugestive în funcție de rezultat.
  
  
Line 37: Line 37:
   * breadboard 400 puncte   * breadboard 400 puncte
   * ecran LCD 1602   * ecran LCD 1602
 +  * potențiometru
  
-Schema ​electrica ​butoane + buzzer:+Schema ​electrică ​butoane + buzzer:
  
 {{ :​pm:​prj2023:​razvans:​butoane_xo.png?​400 |}} {{ :​pm:​prj2023:​razvans:​butoane_xo.png?​400 |}}
  
  
-Schema ​electrica ​LED-uri:+Schema ​electrică ​LED-uri:
  
 {{ :​pm:​prj2023:​razvans:​schema_leduri_x0.png?​400 |}} {{ :​pm:​prj2023:​razvans:​schema_leduri_x0.png?​400 |}}
  
  
-Schema ​electrica ​ecran LCD:+Schema ​electrică ​ecran LCD:
  
 {{ :​pm:​prj2023:​razvans:​lcd_xo.png?​200 |}} {{ :​pm:​prj2023:​razvans:​lcd_xo.png?​200 |}}
Line 57: Line 58:
  
  
-<note tip> 
 Mediu de dezvoltare: Arduino IDE Mediu de dezvoltare: Arduino IDE
 +
 Librării şi surse 3rd-party: Librării şi surse 3rd-party:
   * LiquidCrystal.h => LCD   * LiquidCrystal.h => LCD
Line 64: Line 65:
  
  
-Functia ​setup(): +Funcția ​setup(): 
-  * se seteaza ​pinii pentru LED-uri ca OUTPUT +  * se setează ​pinii pentru LED-uri ca OUTPUT 
-  * se seteaza ​pinii pentru butoane ca INPUT +  * se setează ​pinii pentru butoane ca INPUT 
-  * se seteaza ​pinul pentru buzzer ca OUTPUT +  * se setează ​pinul pentru buzzer ca OUTPUT 
-  * se porneste ​un joc de lumini+  * se pornește ​un joc de lumini
   * se sting LED-urile ​   * se sting LED-urile ​
-  * se initializeaza ​diverse variabile+  * se inițializează ​diverse variabile
  
-Cateva ​dintre ​functiile ​prezente ​in codul sursa:+Câteva ​dintre ​funcțiile ​prezente ​în codul sursă:
  
-Functia ​loop(): +Funcția ​loop(): 
-  * se cauta prima pozitie libera si se aprinde LED-ul respectiv, ​pozitie ​din care player-ul ​isi poate incepe ​mutarea +  * se caută ​prima poziție liberă și se aprinde LED-ul respectiv, ​poziție ​din care player-ul ​își poate începe ​mutarea 
-  * se verifica ​ce buton este apasat si astfel se efectueaza ​una dintre ​mutarile ​posibile; ​pozitia curenta ​pe care se afla player-ul este marcata ​printr-un blink al LED-ului, care ramane ​aprins ​cand s-a apasat ​butonul OK+  * se verifică ​ce buton este apăsat și astfel se efectuează ​una dintre ​mutările ​posibile; ​poziția curentă ​pe care se află player-ul este marcată ​printr-un blink al LED-ului, care rămâne ​aprins ​când s-a apăsat ​butonul OK
  
-Functia ​arduinosTurn():​ +Funcția ​arduinosTurn():​ 
-  * verifica posibilitatile ​de mutare ​dupa 3 criterii => o pozitie favorabila castigului, o pozitie ​ce pune in dificultate player-ul ​si pozitie ​random+  * verifică posibilitățile ​de mutare ​după 3 criterii => o poziție favorabilă câștigului, o poziție ​ce pune în dificultate player-ul ​și poziție ​random
  
-Functia ​checkGame():​ +Funcția ​checkGame():​ 
-  * verifica daca s-a ajuns la vreuna din combinatiile castigatoare si stabileste castigatorul+  * verifică dacă s-a ajuns la vreuna din combinațiile câștigătoare și stabilește câștigătorul
  
  
-Mai exista ​de asemenea ​si alte functii, al caror nume este destul de sugestiv pentru comportamentul lor: initialise(),​ checkPossibilities(),​ checkBlockers(),​ randomPlay(),​ playPoss(), endGame(), endSongs().+Mai există ​de asemenea ​și alte funcții, al căror ​nume este destul de sugestiv pentru comportamentul lor: initialise(),​ checkPossibilities(),​ checkBlockers(),​ randomPlay(),​ playPoss(), endGame(), endSongs().
  
  
-</​note>​ 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Rezultatele ​au fost cele dorite, întrucât am reușit să duc la capăt toate funcționalitățile pe care mi le-am propus. Am obținut astfel un joc de X și 0 player-Arduino,​ la finalul căruia se pot obține 3 scenarii: a câștigat jucătorul, a câștigat Arduino sau a fost remiză. După fiecare rezultat, se va porni o melodie de fundal și un joc de lumini pe LED-urile din combinația câștigătoare,​ sau un joc de lumini cu toate cele 18 LED-uri în cazul remizei. De asemenea, pe ecranul LCD se va afișa și scorul curent
-Care au fost rezultatele ​obţinute în urma realizării proiectului vostru+ 
-</note>+{{ :​pm:​prj2023:​razvans:​rezultate_1.jpeg?​400 |}} 
 + 
 + 
 +{{ :​pm:​prj2023:​razvans:​rezultate_2.jpeg?​400 |}} 
 + 
 + 
 +{{ :​pm:​prj2023:​razvans:​rezultate_3.jpeg?​400 |}} 
 + 
 +Link video demo: https://​youtu.be/​4XEJhvZ9xkQ 
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Deși mi s-a părut complicat la început, neștiind cu ce să încep mai întâi în implementarea proiectului,​ pe parcurs mi-a făcut mare plăcere să lucrez la el, cu siguranță mi-aș dori să mai experimentez cu astfel de proiecte pe viitor. Mi s-a părut foarte interesant și am învățat să pun în practică noțiuni teoretice.
 +
  
 ===== Download ===== ===== Download =====
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**.+Arhivă proiect{{:pm:prj2023:razvans:dicustefania_tictactoeonleds.zip|}} 
 </​note>​ </​note>​
  
Line 112: Line 124:
   * 17.05.2023: Implementarea hardware a proiectului   * 17.05.2023: Implementarea hardware a proiectului
   * 28.05.2023: Implementarea software a proiectului   * 28.05.2023: Implementarea software a proiectului
 +  * 29.05.2023: Proiectul finalizat
  
  
Line 117: Line 130:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+ 
 +  * https://​www.instructables.com/​Intelligent-Arduino-Tic-Tac-Toe-Noughts-and-Crosse/ 
 +  ​https://​www.geekering.com/​categories/​embedded-sytems/​arduino/​joaotarquinio/​arduino-mega-2560-getting-started-with-lcds/​ 
 +  ​https://www.hibit.dev/​posts/​62/​playing-popular-songs-with-arduino-and-a-buzzer 
 </​note>​ </​note>​
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2023/razvans/tic-tac-toe-on-leds.1685310838.txt.gz · Last modified: 2023/05/29 00:53 by stefania.dicu1506
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