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 回答