1

我正在连接处理和 Arduino 按钮。它与标准固件成功连接。我想要发生的是,当按下按钮时,图像会出现在处理中,但也会留在屏幕上,就像 LED 一样,然后当再次按下按钮时,图像将从屏幕上消失。我现在只是用形状测试它。我已经用 LED 对其进行了测试,效果很好。任何想法我做错了什么?这是我的代码:

void draw()
{
  buttonState = arduino.digitalRead(buttonPin);

  if (buttonState == arduino.HIGH && buttonPressed == 0)
  {
    buttonPressed = 1;
    rect(10, 10, 10, 10);
    text("hello", 10, 10);
  }
  if (buttonState == arduino.LOW && buttonPressed == 1)
  {
    buttonPressed = 0;
    rect(50, 50, 10, 10);
  }
} 
4

1 回答 1

0

我不确定您是如何连接按钮的。我假设当你按下它时它会变高。

目前,if当按钮被按下时,您的第一个语句将被触发,但前提是您上次检查时没有按下它(即它实际上是上升沿触发的)。

当按钮被释放时,您的第二个if语句将被触发,但前提是您上次检查时它没有被释放(即它实际上是下降沿触发的)。

如果您希望按钮在每次按下时切换某些内容,那么您可能需要将大部分逻辑放入第一个if语句(除了这些buttonPressed东西)。您将需要存储某种值,说明图像当前是否可见。如果按下按钮时它可见,则将其隐藏(反之亦然)。

例如:

boolean imageVisible = false;

void draw()
{
    buttonState = arduino.digitalRead(buttonPin);

    if (buttonState == arduino.HIGH && buttonPressed == 0)
    {
        buttonPressed = 1;
        if (imageVisible) {
            // Hide image here...
        } else {
            // Show image here...
        }
        imageVisible = !imageVisible;
    }

    if (buttonState == arduino.LOW)
    {
        buttonPressed = 0;
    }
}

注意:我buttonPressed从第二if条语句中删除了支票。仅当您确实需要响应下降沿事件时才需要。对于一个简单的切换,它并不重要。

于 2014-04-23T14:03:35.033 回答