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