Arduino如何检测LED的状态?

时间:2013-01-03 11:36:52

标签: arduino led

我正在为Arduino制作一个闪烁/褪色的灯光程序。我正在尝试建立一些基于LED状态和某些开关组合的交互性。考虑一下:当按下一个按钮时,如果LED指示灯亮,我想关闭它,如果LED指示灯熄灭,我想打开它。

但是,我无法找到有关确定LED状态的任何信息。最接近Android的是this question,但我试图找出是否可以从Arduino平台上做到这一点。有没有人有任何实践经验或建议?

2 个答案:

答案 0 :(得分:4)

您有几种选择:

一,您可以将LED状态存储在布尔值中,按下按钮,取消该状态并将其写入LED端口:

void loop()
{
    static int ledState = 0; // off
    while (digitalRead(BUTTON_PIN) == 0)
        ; // wait for button press

    ledState = !ledState;
    digitalWrite(LED_PORT, ledState);
}

二,如果您不介意直接访问AVR的端口:

void init()
{
    DDRD = 0x01; // for example: LED on port B pin 0, button on port B pin 1
    PORTB = 0x00;
}

void loop()
{
    while (PINB & 0x02 == 0)
        ; // loop until the button is pressed

    PORTB ^= 0x01; // flip the bit where the LED is connected
}

答案 1 :(得分:4)

读取输出端口绝对可以。那是

digitalWrite(LED_PORT, !digitalRead(LED_PORT));

将切换引脚。

您可能还需要考虑切换库:http://playground.arduino.cc/Code/DigitalToggle