Mikrofón - streda 2526: Difference between revisions
mNo edit summary |
mNo edit summary |
||
| Line 76: | Line 76: | ||
[[Image:mikrofon-zaznam4.png]] | [[Image:mikrofon-zaznam4.png]] | ||
[[Image:mikrofon-zaznam5.png| | [[Image:mikrofon-zaznam5.png|1000px]] | ||
Latest revision as of 21:59, 10 December 2025
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.
void setup() {
Serial.begin(9600);
delay(3000);
}
void loop() {
int x = analogRead(A2);
Serial.println(x);
delay(300);
}
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:
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);
}
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.
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);
}
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:



