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

在使用Arduino开关进行处理时,如何使图像保持在屏幕上?,arduino,switch-statement,processing,firmata,Arduino,Switch Statement,Processing,Firmata,我正在连接处理和Arduino按钮。它已成功连接到标准Firmata。我想发生的是,当按下按钮时,图像将在处理过程中显示,但也会停留在屏幕上,就像LED一样,然后当再次按下按钮时,图像将从屏幕上消失。我现在只是用形状来测试它。我已经用LED测试过了,效果很好。知道我做错了什么吗?这是我的代码: void draw() { buttonState = arduino.digitalRead(buttonPin); if (buttonState == arduino.HIGH &

我正在连接处理和Arduino按钮。它已成功连接到标准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);
  }
} 

我不知道你是怎么按上按钮的。我想当你按它的时候它会变高

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

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

如果希望按钮每次按下时都能切换某些内容,则可能需要将大部分逻辑放入第一个
If
语句中(除了
按钮按下的内容)。您需要存储某种值,该值表示图像当前是否可见。如果按下按钮时它可见,则将其隐藏(反之亦然)

例如:

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;
    }
}

注意:我从第二个
if
语句中删除了
按钮按下的检查。只有当你真的需要对下降边缘事件做出反应时,才有必要这样做。对于简单的切换,这并不重要。

谢谢。这真的很有帮助!