This shows you the differences between two versions of the page.
pm:prj2025:ajipa:mihai.lemnaru [2025/05/23 11:31] 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 (i16,i17), Joystick GND (–), toate rezistențele de pull-down, 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 2 | Buton la +5 V, rezistor extern de pull-down (~10 kΩ) la GND | |
- | | **D6** | Digital | Buton 3 | 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> | ||