Mikrofón - streda 2526

From Krúžok Robotiky CENADA
Revision as of 21:51, 10 December 2025 by Palo (talk | contribs) (Created page with "Mikrofón sme pripojili takto: GND - na zem (čierny rad pinov) + - na napájanie (červený rad pinov) AO - analog output - na analógový pin A2, čiže na RP2040 je to pin 28 Nasledujúci program iba neustále číta z analógového pinu A2 a zobrazuje hodnotu v sériovom monitore. Keď do mikrofónu zakričíme, zapískame, alebo len do neho fúkneme, tak čísla výrazne vyskočia na chvíľu na iné hodnoty. Z analógového pinu si teda môžeme prečíta...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Mikrofón sme pripojili takto:


GND - na zem (čierny rad pinov) + - na napájanie (červený rad pinov) AO - analog output - na analógový pin A2, čiže na RP2040 je to pin 28

Nasledujúci program iba neustále číta z analógového pinu A2 a zobrazuje hodnotu v sériovom monitore. Keď do mikrofónu zakričíme, zapískame, alebo len do neho fúkneme, tak čísla výrazne vyskočia na chvíľu na iné hodnoty. Z analógového pinu si teda môžeme prečítať aktuálnu vzorku zvukovej vlny v momentálnom čase merania.

<syntaxhighligh lang="C++"> void setup() {

 Serial.begin(9600);
 delay(3000);

}

void loop() {

 int x = analogRead(A2);
 Serial.println(x);
 delay(300);

} </syntaxhighlight>


Keď už vieme ako približne mikrofónový senzor funguje, môžeme to využiť na jednoduché zariadenie, ktoré začne sirénkou vydávať zvuky potom, čo do mikrofónu zakričíme:

<syntaxhighligh lang="C++"> void setup() {

 pinMode(3, OUTPUT);

}

void loop() {

 int x = analogRead(A2);
 if (x > 200) {
   for (int i = 0; i < 10; i++) {
     tone(3, 880, 200);  delay(250);
     tone(3, 440, 200);  delay(250);
     tone(3, 880, 200);  delay(250);
   }
 }
 delay(300);

} </syntaxhighlight>

A nakoniec sme urobili program, ktorý zvukovú vlnu zaznamenal do pola, ktoré potom vypísal do sériového portu. Začiatok a koniec záznamu označil krátkym písknutím sirénkou.

<syntaxhighligh lang="C++"> int16_t zaznam[100000]; // do pola zaznam ulozime 100-tisic vzoriek

void setup() {

 Serial.begin(9600);
 pinMode(3, OUTPUT);
 delay(3000);
 tone(3, 880, 200);          // sirena je na digitalnom pine 3
 delay(500);
 for (int i = 0; i< 100000; i++)
   zaznam[i] = analogRead(A2);
 tone(3, 880, 200);
 delay(500);
 for (int i = 0; i < 100000; i++)
   Serial.println(zaznam[i]);

}

void loop() {

 delay(300);

} </syntaxhighlight>

Takto zaznamenané a vypísané hodnoty sme potom mohli skopírovať do MS Excelu a zobraziť v grafe. Tu sú príklady zvukových vĺn, ktoré sme zaznamenali:

width=1000px