This shows you the differences between two versions of the page.
pm:prj2025:iotelea:alexandra.lache0802 [2025/05/26 19:29] alexandra.lache0802 [Hardware Design] |
pm:prj2025:iotelea:alexandra.lache0802 [2025/05/26 21:55] (current) alexandra.lache0802 [Hardware Design] |
||
---|---|---|---|
Line 32: | Line 32: | ||
**Diagramă circuit**: | **Diagramă circuit**: | ||
- | {{ :pm:prj2025:iotelea:circuit_image_alexandra_lache.png?nolink&700 |}} | + | {{ :pm:prj2025:iotelea:circuit_image_2_.png?nolink&700 |}} |
**Explicare cablaj** | **Explicare cablaj** | ||
Line 60: | Line 60: | ||
^ Pin ^ Legătură ESP32 ^ Notă | | ^ Pin ^ Legătură ESP32 ^ Notă | | ||
- | | COL0 | GPIO34 | Intrare digitală (doar input) | | + | | COL0 | GPIO34 | doar input | |
- | | COL1 | GPIO35 | Intrare digitală (doar input) | | + | | COL1 | GPIO35 | doar input | |
- | | COL2 | GPIO32 | Intrare | | + | | COL2 | GPIO32 | | |
- | | COL3 | GPIO33 | Intrare | | + | | COL3 | GPIO33 | | |
- | | COL4 | GPIO25 | Intrare | | + | | COL4 | GPIO25 | | |
- | | COL5 | GPIO26 | Intrare | | + | | COL5 | GPIO26 | | |
- | | COL6 | GPIO27 | Intrare | | + | | COL6 | GPIO27 | | |
- | | COL7 | GPIO14 | Intrare | | + | | COL7 | GPIO14 | | |
Line 77: | Line 77: | ||
- | **Testare componente** | + | **Realizare tablă de șah** |
+ | * [[https://drive.google.com/file/d/1VPy6rCzRrRd5N0nA_zXQbXTYwYyt8QC6/view?usp=sharing|Bandă led pe suportul inferior al tablei]] | ||
+ | * [[https://drive.google.com/file/d/1a6xs2k5m4d7LkpFWmB1pGvC11KmW6UEW/view?usp=sharing| Testare funcționalitate 74HC595N]] | ||
+ | * [[https://drive.google.com/file/d/1Qw_CxFBaAX7rj3JhEk1cNrkVJc_pHWwu/view?usp=sharing|Suport reed-uri]] | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 85: | Line 88: | ||
* librării : Adafruit_NeoPixel.h pentru programarea bandei led adresabile, LiquidCrystal_I2C.h și Wire.h pentru LCD | * librării : Adafruit_NeoPixel.h pentru programarea bandei led adresabile, LiquidCrystal_I2C.h și Wire.h pentru LCD | ||
* noțiuni de laborator folosite: I2C, timer, întreruperi | * noțiuni de laborator folosite: I2C, timer, întreruperi | ||
+ | * github repo: https://github.com/alex2004-l/smart-chessboard | ||
+ | |||
+ | **Implementare** | ||
+ | |||
+ | * Aplicația este structurată ca o mașină de stări: BEGINNING, READY, PICK, MOVE, CAPTURE, END; | ||
+ | |||
+ | * Pentru a urmări pozițiile pieselor pe tablă se folosesc doi vectori: board și previous_board. | ||
+ | * press_button_white() și press_button_black() sunt ISR-uri (Interrupt Service Routines) care schimbă starea jocului când jucătorul apasă butonul. | ||
+ | |||
+ | * Detectarea mutărilor pieselor prin comparația board vs previous_board | ||
+ | |||
+ | * Validarea mutărilor pe baza tipului de piesă (folosind funcțiile din moves.h) | ||
+ | |||
+ | * Implementarea unui sistem de cronometru (folosind hardware timer) | ||
+ | |||
+ | * Detectarea capturilor și actualizarea stării jocului (CAPTURE, END) | ||
+ | |||
+ | * Afișarea mutărilor și timpului pe LCD | ||
+ | |||
+ | * Controlul LED-urilor în funcție de mutările făcute sau starea curentă | ||
+ | |||