سلام
من می خوام یه برنامه بنویسم که به ورودیش یه میکروفن ببندم (خازنی چه مدلی باشه بهتره) که وقتی صدارو دریافت کرد فرکانس صدارو نمایش بده .
اگه بشه تا چند صد مگا هرتز بره خوبه. :biggrin:
یه برنامه هست که فقط میکروفن به میکرو میبندیم ولی چون C هست چیزی نمیفهمم کسی میتونه بی زحمت اینو به زبان بیسیک تبدیل کنه و برام بذاره.
:read:
من می خوام یه برنامه بنویسم که به ورودیش یه میکروفن ببندم (خازنی چه مدلی باشه بهتره) که وقتی صدارو دریافت کرد فرکانس صدارو نمایش بده .
اگه بشه تا چند صد مگا هرتز بره خوبه. :biggrin:
یه برنامه هست که فقط میکروفن به میکرو میبندیم ولی چون C هست چیزی نمیفهمم کسی میتونه بی زحمت اینو به زبان بیسیک تبدیل کنه و برام بذاره.
:read:کد:
#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;
}






دیدگاه