2
我試圖在純C中使用Arduio Uno,因爲我無法將Arduino IDE用於我的高級設計項目。在某種程度上,我成功地使串行通信正常工作,數字輸出/輸入和模擬輸入。我正在閱讀模擬輸入,但其中大部分都是20,000+,這是很高的。這應該是一個10位的ADC,而我只是試圖使用8位。爲什麼我的結果讀100X是最高的呢?ADC在arduino中C
void init_aio(){
DIDR0 = 0x00; //Digital input disabled on all ADC ports
PRR &= ~(1<<PRADC); //ADC turned on
ADMUX = 0x60; //AVcc, right adjusted, ADC0 pin
ADCSRA = 0xcF; //ADC Enabled, no auto trigger, Iterrupt enabled, 128 prescaller
}
int read_analog(){
reading = APin0;
ADCSRA |= 1<<ADSC; //conversion start
reading = abs(reading);
return reading;
}
我能想到的唯一事情是,我使用的 「INT reading_str = itoa(讀,緩衝液,10);」使其成爲可打印的價值。當我直接打印閱讀時,它會向終端打印垃圾。 (炭緩衝液[100];是緩衝器是什麼)
的烏諾使用一個ATMEGA328P: www.atmel.com/Images/doc8161.pdf
感謝您的幫助。
嘗試屏蔽到10位,即'value&0x3FF';前6位可能不會被初始化爲零。然後您可以通過將模擬引腳接地來檢查輸入是否如預期的那樣。 – Polynomial
太棒了!就是這樣。非常感謝!想讓這個答案得到一票嗎? –
很高興幫助:) – Polynomial