This shows you the differences between two versions of the page.
|
pm:prj2026:ciprian.popescu0411:ilinca.tololoi [2026/05/25 00:08] ilinca.tololoi [Hardware Design] |
pm:prj2026:ciprian.popescu0411:ilinca.tololoi [2026/05/25 01:59] (current) ilinca.tololoi [Afisaj LCD] |
||
|---|---|---|---|
| Line 129: | Line 129: | ||
| Pin mijloc (wiper) → PA0, PA1, PA2 | Pin mijloc (wiper) → PA0, PA1, PA2 | ||
| - | https://imgur.com/a/U1WJFZq | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 190: | Line 189: | ||
| === Surse și funcții implementate === | === Surse și funcții implementate === | ||
| - | {| class="wikitable" border="1" | + | **readTTP229()** |
| - | | Funcție || Descriere | + | |
| - | |- | + | Citește starea celor 8 electrozi ai TTP229 prin bit-banging SPI și returnează un byte cu biții corespunzători tastelor apăsate |
| - | | <code>readTTP229()</code> || Citește starea celor 8 electrozi ai TTP229 prin bit-banging SPI și returnează un byte cu biții corespunzători tastelor apăsate | + | |
| - | |- | + | |
| - | | <code>getFirstKey()</code> || Parcurge byte-ul returnat de TTP229 și returnează indexul primei taste apăsate (0–7) sau -1 dacă nicio tastă nu e apăsată | + | **getFirstKey()** |
| - | |- | + | |
| - | | <code>calcFreq()</code> || Calculează frecvența finală a notei în funcție de indexul notei, octava curentă și modificatorul de frecvență de la potențiometru | + | Parcurge byte-ul returnat de TTP229 și returnează indexul primei taste apăsate (0–7) sau -1 dacă nicio tastă nu e apăsată |
| - | |- | + | |
| - | | <code>playFreq()</code> || Configurează Timer1 pentru unda pătrat sau apelează tone() pentru celelalte forme de undă; include cache pe ultima frecvență pentru a evita reconfigurări inutile | + | |
| - | |- | + | |
| - | | <code>stopSound()</code> || Oprește orice sunet activ, resetează registrele Timer1 și marchează starea ca inactivă | + | **calcFreq()** |
| - | |- | + | |
| - | | <code>updateLCD()</code> || Actualizează ecranul LCD cu nota, octava, frecvența și forma de undă curentă, cu throttle de 150ms | + | Calculează frecvența finală a notei în funcție de indexul notei, octava curentă și modificatorul de frecvență de la potențiometru |
| - | |- | + | |
| - | | <code>setup()</code> || Inițializează toți pinii, Timer1, I2C, LCD și MPR121 | + | |
| - | |- | + | |
| - | | <code>loop()</code> || Bucla principală: citește butoanele, potențiometrele, TTP229, MPR121, calculează nota activă, aplică gate/duty și actualizează LCD-ul | + | **playFreq()** |
| - | |} | + | |
| + | Configurează Timer1 pentru unda pătrat sau apelează tone() pentru celelalte forme de undă; include cache pe ultima frecvență pentru a evita reconfigurări inutile | ||
| + | |||
| + | |||
| + | |||
| + | **stopSound()** | ||
| + | |||
| + | Oprește orice sunet activ, resetează registrele Timer1 și marchează starea ca inactivă | ||
| + | |||
| + | |||
| + | |||
| + | **updateLCD()** | ||
| + | |||
| + | Actualizează ecranul LCD cu nota, octava, frecvența și forma de undă curentă, cu throttle de 150ms | ||
| + | |||
| + | |||
| + | |||
| + | **setup()** | ||
| + | |||
| + | Inițializează toți pinii, Timer1, I2C, LCD și MPR121 | ||
| + | |||
| + | |||
| + | |||
| + | **loop()** | ||
| + | |||
| + | Bucla principală: citește butoanele, potențiometrele, TTP229, MPR121, calculează nota activă, aplică gate/duty și actualizează LCD-ul | ||
| + | |||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| Line 214: | Line 240: | ||
| Care au fost rezultatele obţinute în urma realizării proiectului vostru. | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
| </note> | </note> | ||
| + | |||
| + | Aici poate fi observata functionalitatea hardware si software, combinate in stadiul final al proiectului: | ||
| + | |||
| + | https://imgur.com/a/U1WJFZq | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||