2013-04-23 53 views
1

所以我的問題是作爲標題所說:Arduino的UNO analogRead總是返回1023的Arduino UNO analogRead總是返回1023

但是,當我燒同樣的草圖中的Arduino兆2650一切就像一個魅力。

我試圖改變UNO上的Atmel芯片,嘗試像3個(ATMEGA328P-PU),沒有任何變化。

我試圖計數來自霍爾效應傳感器的信號並在7段顯示器上顯示計數。

下面是代碼:

#include "SevSeg.h" 

SevSeg sevseg; 
volatile int rpmcount; 

void setup() { 
    Serial.begin(9600); 
    pinMode(2,INPUT_PULLUP); 
    rpmcount = 0; 
    sevseg.Begin(1,3,4,5,6,7,8,9,10,11,12,13); 
} 
int border=15; 

void loop() { 
    int tmp=0; 
    tmp = analogRead(0); 
    if(!digitalRead(2))rpmcount=0; 
    Serial.println(tmp,DEC); 
    if(tmp<=border && res >border){ 
    rpmcount++; 
    if(rpmcount>9999)rpmcount=0; 
    } 

    res=tmp; 
    sevseg.NewNum(rpmcount,(byte) 0); 
    sevseg.PrintOutput(); 
} 

任何幫助,將不勝感激

+1

你測試了你從pin2如果霍爾傳感器沒有連接?你有沒有嘗試過使用另一個引腳輸入? – MortenSickel 2013-04-23 12:43:12

+0

如果傳感器沒有連接,我仍然得到1023。 剛剛嘗試了更改要使用的模擬引腳的建議 - 結果與之前完全相同。我有點失落在這一個。 – halloweenlv 2013-04-23 12:56:56

+0

因爲你換了CPU,所以聽起來好像PCB壞了......: -/- 嘗試將引腳接地並看它是否顯示0 - 如果不是,則肯定是錯誤的。 – MortenSickel 2013-04-23 13:27:05

回答

1

這聽起來對我來說,如果你有允許ADC引腳上的內部上拉電阻。

通用清單:

    在ACSR
  • ACD位爲0(比較器使能)在ADMUX
  • MUX位設置正確
  • 正確AREF選擇
  • ADC管腳設置爲輸入
  • 內部上拉電阻被取消選擇