我正在为Arduino制作一个闪烁/褪色的灯光程序。我正在尝试建立一些基于LED状态和某些开关组合的交互性。考虑一下:当按下一个按钮时,如果LED指示灯亮,我想关闭它,如果LED指示灯熄灭,我想打开它。
但是,我无法找到有关确定LED状态的任何信息。最接近Android的是this question,但我试图找出是否可以从Arduino平台上做到这一点。有没有人有任何实践经验或建议?
答案 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