2011-11-07 96 views
1

我正在使用面包登上arduino。在我的中断功能中,我想读取其中一个GPIO引脚的值,然后在计数器低电平时递增计数器。我正在使用以下内容。Arduino digitalRead()总是返回低电平

displayValues[4]++; 
hasButtonPushed = true; 

if(digitalRead(BUTTON_A) == LOW) { 
    displayValues[5]++; 
} 
if(digitalRead(BUTTON_B) == LOW) { 
    displayValues[6]++; 
} 
if(digitalRead(BUTTON_C) == LOW) { 
    displayValues[7]++; 
} 

但是,即使输入线直接连接到高电平,代码也会返回低电平。我不相信我的爱特梅尔受损。有任何想法吗?

+3

您是否将按钮声明为输入? – shookster

+1

这可能实际上是一个EE堆栈交换的问题 - 我的猜测是它必须在你的引脚如何连接到地面上做更多的事情。像水这样的电力沿着阻力最小的路径走,如果它能通过任何其他按钮或任何其他连接到达地面而不是Atmel(它将提供2.5 + v或任何阈值),它会。您需要确保Atmel是阻力最小的路径或电压不会达到高电平状态。 –

+0

我会尝试发布那里谢谢,并且是引脚已被声明为输入。我的mutimeter读取它们的高度,但atmel没有。 – secretformula

回答

0

问题是arduino库导致数字阅读不起作用的问题。较新的arduino版本解决了这个问题,但我通过将所有内容重写为原生AVR来解决这个问题。

+0

是什么版本的Arduino库导致数字阅读失效? – PrimosK

+0

它是1之前的版本,我不确定。 – secretformula