在使用Arduino开关处理时如何使图像保持在屏幕上?

时间:2014-04-23 07:32:51

标签: arduino switch-statement processing firmata

我正在连接Processing和Arduino按钮。它与Standard Firmata成功连接。我想要发生的是,当按下按钮时,图像将显示在处理中,但也保持在屏幕上,就像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);
  }
} 

1 个答案:

答案 0 :(得分: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项检查。只有在您真正需要响应下降边缘事件时才有必要。对于简单的切换,它并不重要。