سلام
من می خوام یه برنامه بنویسم که به ورودیش یه میکروفن ببندم (خازنی چه مدلی باشه بهتره) که وقتی صدارو دریافت کرد فرکانس صدارو نمایش بده .
اگه بشه تا چند صد مگا هرتز بره خوبه. :biggrin:
یه برنامه هست که فقط میکروفن به میکرو میبندیم ولی چون C هست چیزی نمیفهمم کسی میتونه بی زحمت اینو به زبان بیسیک تبدیل کنه و برام بذاره.
:read:
من می خوام یه برنامه بنویسم که به ورودیش یه میکروفن ببندم (خازنی چه مدلی باشه بهتره) که وقتی صدارو دریافت کرد فرکانس صدارو نمایش بده .
اگه بشه تا چند صد مگا هرتز بره خوبه. :biggrin:
یه برنامه هست که فقط میکروفن به میکرو میبندیم ولی چون C هست چیزی نمیفهمم کسی میتونه بی زحمت اینو به زبان بیسیک تبدیل کنه و برام بذاره.

کد:
#include <inttypes.h> #include <avr/io.h> #include <util/delay.h> #define LED_BIT PD4 /* * get_adc * Return the 10bit value of the selected adc channel. */ uint16_t get_adc() { uint16_t value; // warm up the ADC, discard the first conversion ADCSRA |= (1 << ADSC); while (ADCSRA & (1 << ADSC)); value = ADCW; ADCSRA |= (1 << ADSC); // start single conversion while (ADCSRA & (1 << ADSC)); // wait until conversion is done return ADCW; } int main(void) { uint8_t i = 0; DDRD |= 0x1c; // PD2-PD3: col 6-7, PD4: debug LED // select channel ADMUX = 5; // ADC setup ADCSRA = (1 << ADEN) | // enable ADC (1 << ADPS1) | (1 << ADPS0); // set prescaler to 8 // say hello for (i = 0; i < 5; i++) { PORTD |= (1 << LED_BIT); _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms(10); PORTD &= ~(1 << LED_BIT); _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms(10); } _delay_ms(10); _delay_ms(10); while (1) { if (get_adc() > 180) { PORTD |= (1 << LED_BIT); _delay_ms(10); PORTD &= ~(1 << LED_BIT); } } return 0; }
دیدگاه