Vajalikud teadmised: [HW] Kasutajaliidese moodul, [AVR] Digitaal-analoogmuundur, Analoog-digitaalmuundur [LIB] Analoog-digitaalmuundur, [LIB] Graafiline LCD, [LIB] Andurid
// Kodulabori mikrofoni näidisprogramm // LCD ekraanil kuvatakse helitugevuse graafik ja teatud helitugevusest süüdatakse LED #include <stdio.h> #include <homelab/adc.h> #include <homelab/delay.h> #include <homelab/module/sensors.h> #include <homelab/module/lcd_gfx.h> #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); } } } }