Differences

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

Link to this comparison view

pm:prj2026:ciprian.popescu0411:ilinca.tololoi [2026/05/24 23:09]
ilinca.tololoi [Hardware Design]
pm:prj2026:ciprian.popescu0411:ilinca.tololoi [2026/05/25 01:59] (current)
ilinca.tololoi [Afisaj LCD]
Line 33: Line 33:
  
 <note tip> <note tip>
-Aici puneţi ​tot ce ţine de hardware design: +Aici puneti ​tot ce tine de hardware design: 
-  * listă ​de piese +  * lista de piese 
-  * scheme electrice (se pot lua şi de pe Internet ​şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png)+  * scheme electrice (se pot lua si de pe Internet ​si din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png)
   * diagrame de semnal ​   * diagrame de semnal ​
-  * rezultatele ​simulării+  * rezultatele ​simularii
 </​note>​ </​note>​
  
 **Lista de piese:** **Lista de piese:**
 * **Unitate de procesare:​** ATmega328P Xplained Mini * **Unitate de procesare:​** ATmega328P Xplained Mini
-  * **Interfață ​de intrare:** Butoane Tactile 6x6mm, ​Potențiometre ​WH148 10k +  * **Interfata ​de intrare:** Butoane Tactile 6x6mm, ​Potentiometre ​WH148 10k 
-  * **Interfață ​de control:** TTP229 (16-Channel Capacitive Touch Sensor) +  * **Interfata ​de control:** TTP229 (16-Channel Capacitive Touch Sensor) 
-  * **Interfață ​de ieșire:** LCD 1602, Interfață ​I2C (PCF8574) +  * **Interfata ​de iesire:** LCD 1602, Interfata ​I2C (PCF8574)
-  * **Audio:** PAM8403 (Class D Audio Amplifier), Difuzoare 3W 8 ohmi, Filtru Pasiv RC (Low-Pass) (din rezistențe de 1kohm și condensator de 100nF) +
-  * **Conectivitate:​** 2 breadboard-uri de 400 găuri fiecare, fire dupont tată-tată și mamă-tată+
   *    * 
-Schema electrica:+  * **Audio:**  
 + 
 +    - PAM8403 (Class D Audio Amplifier) 
 +    - Difuzoare 3W 8 ohmi 
 +    - Filtru Pasiv RC (Low-Pass) (din rezistenta de 1kohm si condensator de 100nF) 
 + 
 +  * **Conectivitate:​** breadboard, fire dupont tata-tata si mama-tata 
 + 
 +===Schema electrica:===
 {{:​pm:​prj2026:​ciprian.popescu0411:​schema_electrica_rox.png?​900 |}} {{:​pm:​prj2026:​ciprian.popescu0411:​schema_electrica_rox.png?​900 |}}
  
-Stadiu hardware fizic:+===Stadiu hardware fizic:===
  
 {{:​pm:​prj2026:​ciprian.popescu0411:​milestone_hardware_rox.jpeg?​600 |}} {{:​pm:​prj2026:​ciprian.popescu0411:​milestone_hardware_rox.jpeg?​600 |}}
  
-Lipituri necesare:+**Lipituri necesare:** 
 + 
 +  * Bara de pini pe ATmega328P Xplained Mini (PB1 + PD0-PD7) 
 + 
 +  * Bara de pini pe PAM8403 (VIN, GND, IN_L, IN_R, LOUT+, LOUT-, ROUT+, ROUT-) 
 + 
 +  * Bara de pini pe HW-017 (3.3V, GND, SDA, SCL, ADD, IRQ) 
 + 
 +  * Bara de 16 pini intre modulul I2C (PCF8574) si LCD 1602
  
-Bara de pini pe ATmega328P Xplained Mini (PB1 + PD0-PD7) +  * Fire cu capat dezgolit pe terminalele difuzoarelor (+ si - pe fiecare)
-Bara de pini pe PAM8403 (VIN, GND, IN_L, IN_R, LOUT+, LOUT-, ROUT+, ROUT-) +
-Bara de pini pe HW-017 (3.3V, GND, SDA, SCL, ADD, IRQ) +
-Bara de 16 pini între modulul I2C (PCF8574) și LCD 1602 +
-Fire cu capăt ​dezgolit pe terminalele difuzoarelor (+ și - pe fiecare)+
  
-Conexiuni ​complete:+===Conexiuni:===
  
-Alimentare:+**Alimentare:**
  
-ATmega 5V → șina +5V breadboard +ATmega 5V → sina +5V breadboard 
-ATmega GND → șina GND breadboard +ATmega GND → sina GND breadboard 
-Șina +5V breadboard 1 → șina +5V breadboard 2 +Sina +5V breadboard 1 → sina +5V breadboard 2 
-Șina GND breadboard 1 → șina GND breadboard 2+Sina GND breadboard 1 → sina GND breadboard 2
  
-I²C bus (SDA + SCL):+**I²C bus (SDA + SCL):**
  
 ATmega PC4 → SDA (HW-017, PCF8574) ATmega PC4 → SDA (HW-017, PCF8574)
 ATmega PC5 → SCL (HW-017, PCF8574, TTP229) ATmega PC5 → SCL (HW-017, PCF8574, TTP229)
  
-TTP229:+**TTP229:**
  
 VCC → +5V VCC → +5V
Line 84: Line 94:
 SDO → PD3 SDO → PD3
  
-HW-017:+**HW-017:**
  
 3.3V → ATmega 3.3V 3.3V → ATmega 3.3V
Line 92: Line 102:
 IRQ → PD2 (INT0) IRQ → PD2 (INT0)
  
-PCF8574 + LCD:+**PCF8574 + LCD:**
  
 VCC → +5V VCC → +5V
Line 100: Line 110:
 16 pini → LCD 1602 (lipit direct) 16 pini → LCD 1602 (lipit direct)
  
-Audio:+**Audio:**
  
 ATmega PB1/OC1A → rezistor 1kΩ → condensator 100nF → PAM8403 IN_L ATmega PB1/OC1A → rezistor 1kΩ → condensator 100nF → PAM8403 IN_L
 PAM8403 VIN → +5V PAM8403 VIN → +5V
 PAM8403 GND → GND PAM8403 GND → GND
-PAM8403 LOUT+ / LOUT- → Difuzor ​stânga+PAM8403 LOUT+ / LOUT- → Difuzor ​stanga
 PAM8403 ROUT+ / ROUT- → Difuzor dreapta PAM8403 ROUT+ / ROUT- → Difuzor dreapta
  
-Butoane (6x):+**Butoane (6x):**
  
 Un pin → GND Un pin → GND
-Celălalt ​pin → PD4, PD5, PD6, PD7, PB2, PB3+Celalalt ​pin → PD4, PD5, PD6, PD7, PB2, PB3
  
-Potențiometre ​(3x):+**Potentiometre ​(3x):**
  
-Pin stânga ​→ +5V+Pin stanga ​→ +5V
 Pin dreapta → GND Pin dreapta → GND
 Pin mijloc (wiper) → PA0, PA1, PA2 Pin mijloc (wiper) → PA0, PA1, PA2
  
-https://​imgur.com/​a/​U1WJFZq 
  
 ===== Software Design ===== ===== Software Design =====
Line 180: 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 204: 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 =====
pm/prj2026/ciprian.popescu0411/ilinca.tololoi.1779653361.txt.gz · Last modified: 2026/05/24 23:09 by ilinca.tololoi
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