Differences

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

Link to this comparison view

pm:prj2025:ajipa:mihai.lemnaru [2025/05/23 11:33]
mihai.lemnaru [Hardware Design]
pm:prj2025:ajipa:mihai.lemnaru [2025/05/29 22:20] (current)
mihai.lemnaru [Software Design]
Line 19: Line 19:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-🧩 **Lista de piese:**+🧩 **Bill of Materials**
 ^    Componenta ​      ​^ ​   Link achiziție ​          ​^ ​   Cantitate ​    ​^ ​  ​Preț ​  ^ ^    Componenta ​      ​^ ​   Link achiziție ​          ​^ ​   Cantitate ​    ​^ ​  ​Preț ​  ^
 |    Buton Alb            | [[https://​www.optimusdigital.ro/​ro/​butoane-i-comutatoare/​1115-buton-cu-capac-rotund-alb.html?​search_query=Buton+cu+Capac+Rotund+Alb&​results=2|Buton]] ​      ​| ​   2    |  1,99 lei  | |    Buton Alb            | [[https://​www.optimusdigital.ro/​ro/​butoane-i-comutatoare/​1115-buton-cu-capac-rotund-alb.html?​search_query=Buton+cu+Capac+Rotund+Alb&​results=2|Buton]] ​      ​| ​   2    |  1,99 lei  |
Line 53: Line 53:
 | **D11** ​      | Digital (MOSI) | LCD SDA                 | SPI MOSI                                   | | **D11** ​      | Digital (MOSI) | LCD SDA                 | SPI MOSI                                   |
 | **D13** ​      | Digital (SCK)  | LCD SCL                 | SPI Clock                                  | | **D13** ​      | Digital (SCK)  | LCD SCL                 | SPI Clock                                  |
-| **5V** ​       | Power       | LCD VCC (i18), Joystick VCC (+)   | +5 V alimentare ​                           |+| **5V** ​       | Power       | LCD VCC, Joystick VCC (+)   | +5 V alimentare ​                           |
 | **GND** ​      | Power       | LCD GND , Joystick GND (–), buzzer “–” | Masă comună ​                          | | **GND** ​      | Power       | LCD GND , Joystick GND (–), buzzer “–” | Masă comună ​                          |
 | **A0** ​       | Analog ​     | Joystick VRx                      | X-axis voltage ​                            | | **A0** ​       | Analog ​     | Joystick VRx                      | X-axis voltage ​                            |
 | **A1** ​       | Analog ​     | Joystick VRy                      | Y-axis voltage ​                            | | **A1** ​       | Analog ​     | Joystick VRy                      | Y-axis voltage ​                            |
-| **D2** ​       | Digital ​    | Joystick SW                       | Switch ​interne ​joystick, cu rezistor de pull-down (~10 kΩ) la GND | +| **D2** ​       | Digital ​    | Joystick SW                       | Switch ​intern ​joystick ​→ când apeși conectează D2 la GND; se folosește `INPUT_PULLUP` ​
-| **D3**        | Digital ​    | Buton 1                      | Buton la +5 V, rezistor extern de pull-down (~10 kΩ) la GND | +| **D4**        | Digital ​    | Buton 1                      | Buton la +5 V, rezistor extern de pull-down (~10 kΩ) la GND                                       | 
-| **D4** ​       | Digital ​    | Buton 2                      | Buton la +5 V, rezistor extern de pull-down (~10 kΩ) la GND                                       | +| **D6** ​       | Digital ​    | Buton                       | Buton la +5 V, rezistor extern de pull-down (~10 kΩ) la GND                                       | 
-| **D6** ​       | Digital ​    | Buton                       | Buton la +5 V, rezistor extern de pull-down (~10 kΩ) la GND                                       | +| **D3**        | Digital / PWM | Buzzer ​               | Buzzer pasiv 5 V, minus la GND; poate fi modulat cu PWM |
-| **D5**        | Digital / PWM | Buzzer ​               | Buzzer pasiv 5 V, minus la GND (e15); poate fi modulat cu PWM |+
  
  
  
-**🔌 Configurația finală realizată fizic**+**🕹️ ​Configurația finală realizată fizic**
  
 {{:​pm:​prj2025:​ajipa:​cablaj_final.jpg?​350}} {{:​pm:​prj2025:​ajipa:​cablaj_final.jpg?​350}}
Line 107: Line 106:
  
 Funcții implementate:​ Funcții implementate:​
-  * **`isButtonPressedActiveLow()`** – verifică dacă butonul conectat la pin (cu semnal activ LOW) a fost apăsat și eliberat, cu debounce intern de ~50 ms. +  * **`isButtonPressedActiveLow_PD2()`** – verifică dacă butonul conectat la pinul 2 (cu semnal activ LOW) a fost apăsat și eliberat, cu debounce intern de ~50 ms. 
-  * **`isButtonPressedActiveHigh()`** – verifică dacă butonul conectat la pin (cu semnal activ HIGH) a fost apăsat și eliberat, cu debounce intern de ~50 ms.+  * **`isButtonPressedActiveHigh_PD4/​PD6()`** – verifică dacă butonul conectat la pinul 4/6 (cu semnal activ HIGH) a fost apăsat și eliberat, cu debounce intern de ~50 ms
 +  * **`fastAnalogReadA0/​A1()`** - verifică și citește rapid valoarea tensiunii analogice de pe pinul A0 (ADC0) / A1 (ADC1), utilizând registrele interne ale convertorului analog-digital (ADC) al microcontrollerului. 
 +  * **`startTone()`** - activează semnalul PWM pe pinul PD3 (OC2B) cu frecvența specificată în Hz, folosind Timer2 configurat în mod CTC. 
 +  * **`stopTone()`** - oprește semnalul PWM generat de Timer2 pe pinul PD3 și setează pinul LOW.
   * **`playBombSequence()`** – redă pe buzzer o succesiune de tonuri care indică „explozia” unei bombe (pierdere de joc).   * **`playBombSequence()`** – redă pe buzzer o succesiune de tonuri care indică „explozia” unei bombe (pierdere de joc).
   * **`playWinSequence()`** – redă pe buzzer o succesiune de tonuri care indică victoria în joc.   * **`playWinSequence()`** – redă pe buzzer o succesiune de tonuri care indică victoria în joc.
Line 195: Line 197:
  
 ^    Laboratoare folosite ​      ​^ ​   Funcționalitate ​          ​^ ​    ​Cod ​         ^ ^    Laboratoare folosite ​      ​^ ​   Funcționalitate ​          ​^ ​    ​Cod ​         ^
-|    **GPIO** ​     |   ​citire / scriere de pini digitali ​   |   **pinMode(JOY_SW_PIN, INPUT_PULLUP)**, **pinMode(BTN_FLAG,​ INPUT)**, **pinMode(BTN_RST,​ INPUT)**, **pinMode(BUZZER,​ OUTPUT)**, **digitalRead(pin)** ​  |+|    **GPIO** ​     |   ​citire / scriere de pini digitali ​   |   **configurePinsWithRegisters()** folosind regiștrii  ​|
 |    **UART** ​     |  comunicație serială ​   |   Nu este explicit în cod, dar am folosit pentru afișajul în consola pentru debug    | |    **UART** ​     |  comunicație serială ​   |   Nu este explicit în cod, dar am folosit pentru afișajul în consola pentru debug    |
-|    **Timere & PWM**      |  generare ton și temporizări ​   |   **tone(BUZZER, ​freq, durată)** folosește timer hardware pentru PWM, iar **delay(...)** folosește temporizări interne ​   ​+|    **Timere & PWM**      |  generare ton și temporizări ​   |   **startTone(uint16_t ​freq)** ​si **stopTone()**  ​folosind Timer0 pe 8 biti pentru PWM  ​
-|    **ADC** ​   |  conversie analog‐digitală ​   |      **analogRead(JOY_X)** și **analogRead(JOY_Y)** pentru citirea poziției joystick-ului ​   |+|    **ADC** ​   |  conversie analog‐digitală ​   |      **fastAnalogReadA0()** și **fastAnalogReadA1()** pentru citirea poziției joystick-ului ​folosind regiștrii ​  |
 |    **SPI** ​   |  interfațare display TFT    |      **tft.initR(INITR_BLACKTAB)** + toate comenzile **tft.xxx** folosesc **SPI** pentru comunicare cu ecranul ST7735 ​   | |    **SPI** ​   |  interfațare display TFT    |      **tft.initR(INITR_BLACKTAB)** + toate comenzile **tft.xxx** folosesc **SPI** pentru comunicare cu ecranul ST7735 ​   |
  
Line 264: Line 266:
  
 [[https://​cdn-learn.adafruit.com/​downloads/​pdf/​adafruit-gfx-graphics-library.pdf|Adafruit GFX Graphics Library]] [[https://​cdn-learn.adafruit.com/​downloads/​pdf/​adafruit-gfx-graphics-library.pdf|Adafruit GFX Graphics Library]]
 +
 +[[https://​docs.arduino.cc/​|Arduino Documentation]]
 +
  
 <​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/prj2025/ajipa/mihai.lemnaru.1747989190.txt.gz · Last modified: 2025/05/23 11:33 by mihai.lemnaru
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