This shows you the differences between two versions of the page.
pm:prj2025:ajipa:mihai.lemnaru [2025/05/23 11:47] mihai.lemnaru [Hardware Design] |
pm:prj2025:ajipa:mihai.lemnaru [2025/05/29 22:20] (current) mihai.lemnaru [Software Design] |
||
---|---|---|---|
Line 60: | Line 60: | ||
| **D4** | 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 | | ||
| **D6** | 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 | | ||
- | | **D5** | Digital / PWM | Buzzer | Buzzer pasiv 5 V, minus la GND; poate fi modulat cu PWM | | + | | **D3** | Digital / PWM | Buzzer | Buzzer pasiv 5 V, minus la GND; poate fi modulat cu PWM | |
Line 106: | 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 194: | 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 | | ||