====== Mikrofon ====== //Vajalikud teadmised: [HW] [[et:hardware:homelab:digi]], [AVR] [[et:avr:dac]], [[et:avr:adc]] [LIB] [[et:software:homelab:library:adc]], [LIB] [[et:software:homelab:library:module:lcd_graphic]], [LIB] [[et:software:homelab:library:module:sensor]]// ===== Teooria ===== [{{ :et:examples:sensor:mic.jpg?150|Mikrofon}}] ===== Praktika ===== // Kodulabori mikrofoni näidisprogramm // LCD ekraanil kuvatakse helitugevuse graafik ja teatud helitugevusest süüdatakse LED #include #include #include #include #include #define ADC_CHANNEL 12 // Põhiprogramm int main(void) { signed short mic; BYTE n; // LCD ekraani seadistamine lcd_gfx_init(); // ADC muunduri seadistamine adc_init(ADC_REF_AVCC, ADC_PRESCALE_8); // LED-i viigu väljundiks seadmine pin_setup_output(led_yellow); pin_set(led_yellow); // Ekraani päise joonistamine FgColor = BLUE; BkColor = YELLOW; lcd_gfx_fillScreen(YELLOW); lcd_gfx_goto_char_xy(6,1); lcd_gfx_write_string("Mikrofon"); lcd_gfx_drawLine(0,40,128,40,BLUE); FgColor = RED; // Lõputu tsükkel while (1) { // Graafiku ala kustutamine lcd_gfx_fillRect(0, 41, 128, 119, WHITE); // Graafiku joonistamine. Ekraani laius on 128 pikslit. for (n = 0; n <= 128; n++) { // Mikrofoni ADC kanali lugemine ja väärtuse sobivasse vahemikku teisendamine mic = map(adc_get_value(ADC_CHANNEL), 0, 2047, 0, 120); // Punkti graafikule kandmine lcd_gfx_drawPixel(n, 160 - mic + 2); // LED-i süütamine, kui helitugevus ületab teatud väärtust if(mic > 30) { pin_toggle(led_yellow); } } } }