Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:cosmin.croitoriu [2025/05/28 13:48]
cosmin.croitoriu
pm:prj2025:rnedelcu:cosmin.croitoriu [2025/05/28 15:56] (current)
cosmin.croitoriu
Line 139: Line 139:
   * D3 crește intensitatea (prin întrerupere **INT1**) Întreruperea este activată pe frontul negativ HIGH to LOW.   * D3 crește intensitatea (prin întrerupere **INT1**) Întreruperea este activată pe frontul negativ HIGH to LOW.
 În toate cazurile am folosit o măsură de a evita debounce-ul folosind niște variabile care rețin timestamp-ul ultimei schimbări. În toate cazurile am folosit o măsură de a evita debounce-ul folosind niște variabile care rețin timestamp-ul ultimei schimbări.
 +
 +**Conversia Analog-Digital**:​ Pentru prelucrarea semnalului de la chitară, am folosit convertorul analog-digital intern al Arduino-ului,​ configurat manual pentru a controla mai precis performanța și viteza de eșantionare.
 +Inițializarea se face în funcția setupADC() prin care se se setează referința la AVcc, se activează ADC-ul și se se setează prescaler-ul la 64.
 +<​code>​
 +void setupADC() {
 +  // AVcc ca referinta si calanalul 0 by default
 +  ADMUX = (1 << REFS0);
 +  ​
 +  // Enable la ADC su Prescaler 64
 +  ADCSRA = (1 << ADEN) 
 +         | (1 << ADPS2) | (1 << ADPS1);
 +}
 +</​code>​
 +
 +Pentru citire în bucla de loop, se schimbă canalul între A0 și A1 (folosim A1 pentru fotorezistor),​ iar apoi se porneste conversia și se asteaptă terminarea.
 +<​code>​
 +uint16_t readADC(uint8_t pin) {
 +  // Setam canalul, 0 sau 1.
 +  ADMUX = (ADMUX & 0xF0) | (pin & 0x0F);
 +
 +  // Start conversie
 +  ADCSRA |= (1 << ADSC);  ​
 +
 +  // Se asteapta pana conversia este terminata
 +  while (ADCSRA & (1 << ADSC));
 +
 +  return ADC;
 +}
 +</​code>​
 +
  
 **Conversia Digital-Analog**:​ Semnalele procesate sunt trimise la DAC-ul **MCP4725**,​ care are implicit adresa 0x60, și care funcționează pe **protocolul I2C**. Valoarea de 10 biți este transformată într-una de 12 biți prin shiftare la stânga. **Conversia Digital-Analog**:​ Semnalele procesate sunt trimise la DAC-ul **MCP4725**,​ care are implicit adresa 0x60, și care funcționează pe **protocolul I2C**. Valoarea de 10 biți este transformată într-una de 12 biți prin shiftare la stânga.
Line 182: Line 212:
  
 [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2017/​ddragomir/​cmihalache|Proiect inspiratie]] [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2017/​ddragomir/​cmihalache|Proiect inspiratie]]
 +
 +{{:​pm:​prj2025:​rnedelcu:​cosmin_proiect_pm.zip|Arhiva cod}}
  
 <​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/rnedelcu/cosmin.croitoriu.1748429301.txt.gz · Last modified: 2025/05/28 13:48 by cosmin.croitoriu
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