2014-04-23 57 views
1

我正在連接Processing和Arduino按鈕。它與Standard Firmata成功連接。我想要發生的事情是,當按下按鈕時,圖像將顯示在Processing中,但也保持在屏幕上,就像LED一樣,然後再次按下該按鈕時,圖像將從屏幕上消失。我現在只是用形狀測試它。我用LED測試過,效果很好。任何想法我做錯了什麼?這是我有的代碼:如何使用Arduino開關處理屏幕上的圖像?

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

我不知道你是如何連接你的按鈕。我假設你按下它時會變高。

當前,按下按鈕時會觸發您的第一個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; 
    } 
} 

注:我刪除從第二if聲明buttonPressed檢查。只有在您確實需要回應下降沿事件時纔有必要。對於簡單的切換,這並不重要。

+0

謝謝。這真的有幫助! – user3426597

相關問題