====== AN36012 - 연속 입력 받기 (터치하고 있는동안 연속적으로 이벤트 발생) ====== CUTOUCH CT1820에서 터치버튼을 계속 누르고 있을때, 연속적으로 이벤트를 발생시키는 방법을 알아보겠습니다. CT1820내에는 AR1021라는 터치콘트롤러가 내장되어 있는데, 이 콘트롤러의 특정 레지스터를 건드리면, 이러한 기능을 구현하실 수 있습니다. {{ :cublocapp:an36012:ct1820_touch.jpg?nolink |}}
#include "CT18XX"
Dim I As Integer
Dim PV As Integer
Dim SV As Integer
Dim TX1 As Integer
Dim TY1 As Integer
Ramclear
PV=24
SV=25
TouchChip_ReInitial
On Pad Gosub GETTOUCH
Font 2,0
Menuset 0,2,200,95,250,120
Menutitle 0,17,4,"UP"
Menuset 1,2,255,95,305,120
Menutitle 1,11,4,"DOWN"
'
' 도씨 캐릭터정의
'
Defchr &HDB30,_
&H00,&H00,&H30,&H00,&H48,&H00,&H48,&H00,_
&H30,&HE0,&H01,&H10,&H02,&H00,&H02,&H00,_
&H02,&H00,&H02,&H00,&H02,&H00,&H01,&H10,_
&H00,&HE0,&H00,&H00,&H00,&H00,&H00,&H00
Ct18contrast 150 ' LCD CONTRAST SETTING
Font 2,0
Locate 2,2
Print "현재온도"
Locate 25,2
Print "설정온도"
Do
' 설정온도
Locate 25,3
Print Dp(SV,2,0),Chr(&HDB30)
Locate 2,3
Print Dp(PV,2,0),Chr(&HDB30)
Delay 100
Loop
GETTOUCH:
TX1 = Sys(10)
TY1 = Sys(11)
' UP KEY
If Menucheck(0,TX1,TY1) = 1 Then
Menureverse 0
Ct18beep 5 '키터치음 발생
SV = SV + 1
' Delay 50
Menureverse 0
End If
' DOWN KEY
If Menucheck(1,TX1,TY1) = 1 Then
Menureverse 1
Ct18beep 5 '키터치음 발생
SV = SV - 1
' Delay 50
Menureverse 1
End If
Return
End
Sub TouchChip_ReInitial()
Set I2c 66,65
_TouchTemp1stValue = Sys(16) 'OS에서 touch칩 인터럽트를 처리못하게 함 (disable)
TouchChip1byteCommand _TouchChipCmd_Disable_Touch '정지
Wait 50
_TouchRegStartAdr = TouchReadStartAdr() 'Register의 시작번지를 알아온다.
Wait 20
' &H40 = push only
' &h41 = push, release
' &h50 = push, move
TouchChipWriteReg &hc,&h50 '&hc=Touch Mode조정
Wait 20
TouchChipWriteReg &h11,255 '&h11=Touch Report Delay조정 (연속해서 누르고있을때, 레포트간의 간격)
Wait 20
TouchChipWriteReg &ha,10 '&ha=sleep Delay조정 (터치입력을 못처리했을경우, 쓸데없이 딜레이되는것 방지)
Wait 20
TouchChip1byteCommand _TouchChipCmd_Enable_Touch '시작
Wait 50
_TouchTemp1stValue = Sys(15) 'OS에서 touch칩 인터럽트를 처리하게 함 (enable)
End Sub
맨 아래있는 TouchChip_ReInitial Sub부프로그램을 눈여겨 보세요. 이 부프로그램이 바로 터치콘트롤러를 셋팅해주는 부분입니다.
다시 한번만 입력되는 모드로 바꾸고 싶다면, 위 부프로그램중 TouchChipWriteReg &hc,&h50을 TouchChipWriteReg &hc,&h40 으로 변경하면 됩니다. (&hc 레지스터의 값을 &h40으로 바꿈)
[[cublocapp:index|한단계 위로]]