Hi Folks,
currently I'm trying adapt this touch switch code which I found in code examples (http://www.picbasic.co.uk/forum/showthread.php?t=2671)
The code is works fine as is, but I need to modify it to respond only to one input pin GPIO.0 I don't need three inputs.
Here is my modified code (not working):
What I overlooked in the code? Can someone point me when I'm wrong? Thanks.Code:' Few cents touch sensor ' ====================== ' Using : PIC12F683 ' ' Circuit is quite simple. One pin(GP4) is used as a signal generator. ' This pin send signal to all "virtual push button" (GPIO<2:0>) ' via 3 X 22K resistor. The touch sensor could be almost everything ' conductive. ' ' Once a sensor is touched, the program will blink a LED as follow ' GPIO.0 => 1 Blink ' GPIO.1 => 2 Blink ' GPIO.2 => 3 Blink ' PIC config and programming mode ' =============================== #CONFIG cfg = _INTOSCIO cfg&= _WDT_OFF cfg&= _PWRTE_OFF cfg&= _MCLRE_OFF cfg&= _CP_OFF cfg&= _CPD_OFF cfg&= _BOD_OFF cfg&= _IESO_OFF cfg&= _FCMEN_OFF __CONFIG cfg #ENDCONFIG DEFINE OSC 4 ; Use a 4 MHZ internal clock ANSEL = 0 CMCON0 = 7 TRISIO = %000001 ;gpio0 input rest output ' I/O Alias definition ' ==================== ' LED VAR GPIO.5 Generator var GPIO.4 ' Hardware definition ' =================== ' ' Variable definition ' =================== ' Sensor var byte Looop var byte ' EEPROM assignement ' ================== ' data @3,3,0,2,1 ' table to convert 'Sensor' variable result to according ' LED blink. See Result list bellow ' Software/hardware initialisation ' ================================ ' led = 0 generator = 0 Start: ' Short explanation of the whole thing. ' 1. Send a high level to all sensor input => GPIO<2:0> ' 2. Read GPIO port ' 3. Send a low level to all sensor input ' 4. Keep only GPIO<2:0> bits ' 5. Test result ' ' If no sensor has been touched, the result will be 7 => 0000 0111, case ' else, the body capacitance will introduce sufficient delay between ' step 1 and 2 wich will keep the according bit to 0. ' ' Results will be as follow ' NoSensor => 0000 0111 => 7 ' GPIO.0 => 0000 0110 => 6 ' GPIO.1 => 0000 0101 => 5 ' GPIO.2 => 0000 0011 => 3 ' repeat Generator = 1 ' enable sensor power Sensor = GPIO ' read sensor Generator = 0 ' disable sensor power Sensor = Sensor & %000001 ' keep only Sensor bits HERE I CHANGE VALUE FROM 7 (0111) TO 1 (0001) until Sensor != %000001 ' redo the test untill one sensor is touch HERE I CHANGE VALUE FROM 7 (0111) TO 1 (0001) ' ' Now we will flash an LED to confirm wich sensor has been touch ' GPIO.0 => 1 Blink ' GPIO.1 => 2 Blink ' GPIO.2 => 3 Blink ' read sensor,looop ' convert result to blink repeat LED = 1 PAUSE 200 lED = 0 PAUSE 200 looop = looop - 1 until looop = 0 goto start ' do it again...




Bookmarks