Nextion Editor 버튼 길게 누르기(Long Press) 기능

Hardware|2024. 6. 5. 14:46
반응형

Nextion 디스플레이를 사용할 때 버튼을 눌러 임의의 값을 증가나 감소 시키는 수행이 필요한 경우가 있습니다. 

그런데 이 값의 변화가 얼마되지 않을때는 버튼을 몇번 클릭하면 되지만 변화가 큰 경우 클릭을 한참 해야 한다는 문제가 발생 합니다. 그런데 Nextion 에디터의 버튼에는 길게 누를때(Long Press)의 이벤트를 생성할 수가 없어서 처음에는 변화되는 수만큼 버튼을 눌러서 값을 변경하였는데 이게 값이 한없이 클때는 정말 힘 들어서 방법을 찾아서 구현을 해 보았습니다.

 

(1) 먼저 에디터에 아래와 같이 버튼 2개의 값을 표시하는 Text를 하나 올려둡니다. 

 

(2) Timer(tm0) 와 Variable(va0) 하나를 추가도 더 올립니다. 

(3) Timer의 속성중에 tim을 100 (msec)로 설정하고 en 은 0으로 설정합니다. 

(4) Timer의 Timer Event에 아래 코드를 추가 합니다. 

  if(va0.val==b0.id)
  {
    Value.val++
  }else
  {
    Value.val--
  }

(5)Up 버튼의 Touch Press Event 에 아래 코드를 추가합니다. 

   va0.val=b0.id
   tm0.en=1

(6)Up 버튼의 Touch Release Event 에 아래 코드를 추가합니다. 

  tm0.en=0

(7)Down 버튼의 Touch Press Event 에 아래 코드를 추가합니다. 

   va0.val=b1.id
   tm0.en=1

(8)Down 버튼의 Touch Release Event 에 아래 코드를 추가합니다. 

   tm0.en=0

 

이제 Uploading 후에 테스트를 해 봅니다. 

Up 버튼을 누르고 있는 동안 값이 증가가 되고 버튼을 떼면 멈추게 됩니다. 

down 버튼도 누르고 있는 동안 값이 감소되고 버튼을 떼면 멈추게 됩니다. 

 

한번씩 누르면 값이 1만큼 증가, 감소됩니다. (최소 100msec 이상은 누르고 있어야 합니다.)

 

만일 아두이노 등에서 디스플레이의 값을 읽어와야 할 경우 각 버튼의 Release 이벤트를 받으면 그때 해당값을 읽어오는 방식으로 

처리하면 됩니다. 

반응형

댓글()