我正在为 Arduino 开发闪烁/褪色灯程序。我正在尝试建立一些基于 LED 状态和某些开关组合的交互性。考虑:当按下按钮时,如果 LED 亮起,我想将其关闭,如果 LED 熄灭,我想将其打开。
但是,我无法找到有关确定 LED 状态的任何信息。最接近的是这个关于 Android 的问题,但我想知道我是否可以从 Arduino 平台做到这一点。有没有人有任何实践经验或建议?
读取输出端口是绝对可以的。那是
digitalWrite(LED_PORT, !digitalRead(LED_PORT));
将切换引脚。
您可能还想考虑切换库: http: //playground.arduino.cc/Code/DigitalToggle
你有几个选择:
一,您可以将 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
}