2014-04-23 7 views
1

가공과 Arduino 누름 단추를 연결하고 있습니다. 그것은 표준 Firmata와 성공적으로 연결되어 있습니다. 내가 원하는 것은 버튼을 누를 때 이미지가 처리 중에 나타나지만 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

나는 당신이 당신의 버튼을 어떻게 연결했는지 모르겠습니다. 네가 그것을 누를 때 HIGH로 간다고 가정하고있다.

현재 버튼을 눌렀을 때 첫 번째 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