This shows you the differences between two versions of the page.
pm:prj2023:razvans:tic-tac-toe-on-leds [2023/05/29 23:10] stefania.dicu1506 |
pm:prj2023:razvans:tic-tac-toe-on-leds [2023/05/30 11:48] (current) stefania.dicu1506 |
||
---|---|---|---|
Line 39: | Line 39: | ||
* potențiometru | * 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 58: | 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 65: | 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 o 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 o 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 113: | 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 118: | 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> | ||