====== 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|한단계 위로]]