2

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

但是,我无法找到有关确定 LED 状态的任何信息。最接近的是这个关于 Android 的问题,但我想知道我是否可以从 Arduino 平台做到这一点。有没有人有任何实践经验或建议?

4

2 回答 2

5

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

digitalWrite(LED_PORT, !digitalRead(LED_PORT));

将切换引脚。

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

于 2013-02-05T22:33:37.920 回答
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
}
于 2013-01-03T11:43:15.243 回答