1

だから私の問題は、タイトルが言うように: Arduino UNO analogRead は常に 1023 を返します。

しかし、同じスケッチを Arduino Mega 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();
}

どんな助けでも大歓迎です

4

1 に答える 1

1

これは、ADC ピンの内部プルアップ抵抗が有効になっているように思えます。

一般的なチェックリスト:

  • ACSR の ACD ビットが 0 (コンパレータ イネーブル)
  • ADMUX の MUX ビットが適切に設定されている
  • 正しい AREF が選択されました
  • 入力として設定された ADC ピン
  • 内部プルアップ抵抗が選択されていない
于 2013-04-24T07:59:47.157 に答える