Mikrofón - streda 2526
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:




