Currently a giant piece of crap, this library is just a quick way to get cheap inputs out of scrap parts. I will fix it up eventually so if you decide to use it now you do so at your own risk. Also, if you are allergic to moronic library names you probably do not want to touch this :)

Committer:
Nakor
Date:
Mon Jan 31 00:00:35 2011 +0000
Revision:
0:8ab3a8aaf559
Child:
1:69d0b1c11c73
First commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nakor 0:8ab3a8aaf559 1 #include "mbed.h"
Nakor 0:8ab3a8aaf559 2 #include "theBadTouch.h"
Nakor 0:8ab3a8aaf559 3
Nakor 0:8ab3a8aaf559 4
Nakor 0:8ab3a8aaf559 5 theBadTouch::theBadTouch(PinName touchPin, PinName sink)
Nakor 0:8ab3a8aaf559 6 {
Nakor 0:8ab3a8aaf559 7 _sensor = touchPin;
Nakor 0:8ab3a8aaf559 8 //_sink = sink;
Nakor 0:8ab3a8aaf559 9 _sink = new DigitalIn(sink);
Nakor 0:8ab3a8aaf559 10 _sink->mode(PullUp);
Nakor 0:8ab3a8aaf559 11 tracker1 = false;
Nakor 0:8ab3a8aaf559 12 tracker2 = false;
Nakor 0:8ab3a8aaf559 13 _touchFlag = 0x00;
Nakor 0:8ab3a8aaf559 14 falseCounter = 0;
Nakor 0:8ab3a8aaf559 15 t.start();
Nakor 0:8ab3a8aaf559 16 t_off.start();
Nakor 0:8ab3a8aaf559 17 }
Nakor 0:8ab3a8aaf559 18
Nakor 0:8ab3a8aaf559 19
Nakor 0:8ab3a8aaf559 20
Nakor 0:8ab3a8aaf559 21 /******************/
Nakor 0:8ab3a8aaf559 22 /* Protected */
Nakor 0:8ab3a8aaf559 23 /******************/
Nakor 0:8ab3a8aaf559 24
Nakor 0:8ab3a8aaf559 25
Nakor 0:8ab3a8aaf559 26
Nakor 0:8ab3a8aaf559 27
Nakor 0:8ab3a8aaf559 28 /******************/
Nakor 0:8ab3a8aaf559 29 /* Public */
Nakor 0:8ab3a8aaf559 30 /******************/
Nakor 0:8ab3a8aaf559 31 // _touchFlag
Nakor 0:8ab3a8aaf559 32 // 0x00 = Free (untouched long enough to be available for instant touch)
Nakor 0:8ab3a8aaf559 33 // 0x01 = being touched
Nakor 0:8ab3a8aaf559 34 // 0x02 = Timing length of time sensor is untouched
Nakor 0:8ab3a8aaf559 35
Nakor 0:8ab3a8aaf559 36 char theBadTouch::isTouch()
Nakor 0:8ab3a8aaf559 37 {
Nakor 0:8ab3a8aaf559 38 if(falseCounter > 20)
Nakor 0:8ab3a8aaf559 39 {
Nakor 0:8ab3a8aaf559 40 _untouchedFlag = 0x01;
Nakor 0:8ab3a8aaf559 41 falseCounter = 0;
Nakor 0:8ab3a8aaf559 42 return 0x00;
Nakor 0:8ab3a8aaf559 43 }
Nakor 0:8ab3a8aaf559 44
Nakor 0:8ab3a8aaf559 45 if(badPlace() >= 1.0)
Nakor 0:8ab3a8aaf559 46 {
Nakor 0:8ab3a8aaf559 47 if(_untouchedFlag == 0x01)
Nakor 0:8ab3a8aaf559 48 {
Nakor 0:8ab3a8aaf559 49 _untouchedFlag = 0x00;
Nakor 0:8ab3a8aaf559 50 return 0x01;
Nakor 0:8ab3a8aaf559 51 }
Nakor 0:8ab3a8aaf559 52 else
Nakor 0:8ab3a8aaf559 53 {
Nakor 0:8ab3a8aaf559 54 t.reset();
Nakor 0:8ab3a8aaf559 55 for(int i = 0; i < 20; i++)
Nakor 0:8ab3a8aaf559 56 {
Nakor 0:8ab3a8aaf559 57 while(badPlace() >= 1.0)
Nakor 0:8ab3a8aaf559 58 {
Nakor 0:8ab3a8aaf559 59 if(t.read_ms() > 300)
Nakor 0:8ab3a8aaf559 60 {
Nakor 0:8ab3a8aaf559 61 return 0x02;
Nakor 0:8ab3a8aaf559 62 }
Nakor 0:8ab3a8aaf559 63 }
Nakor 0:8ab3a8aaf559 64 }
Nakor 0:8ab3a8aaf559 65 }
Nakor 0:8ab3a8aaf559 66 }
Nakor 0:8ab3a8aaf559 67 else
Nakor 0:8ab3a8aaf559 68 {
Nakor 0:8ab3a8aaf559 69 falseCounter++;
Nakor 0:8ab3a8aaf559 70 return 0x00;
Nakor 0:8ab3a8aaf559 71 }
Nakor 0:8ab3a8aaf559 72
Nakor 0:8ab3a8aaf559 73 return 0x00;
Nakor 0:8ab3a8aaf559 74 }
Nakor 0:8ab3a8aaf559 75
Nakor 0:8ab3a8aaf559 76 bool theBadTouch::oldbadPlace()
Nakor 0:8ab3a8aaf559 77 {
Nakor 0:8ab3a8aaf559 78 _precharge = new DigitalInOut(_sensor);
Nakor 0:8ab3a8aaf559 79 _precharge->output();
Nakor 0:8ab3a8aaf559 80 (*_precharge) = 1;
Nakor 0:8ab3a8aaf559 81 _precharge->input();
Nakor 0:8ab3a8aaf559 82 _precharge->mode(PullNone);
Nakor 0:8ab3a8aaf559 83 delete _precharge;
Nakor 0:8ab3a8aaf559 84 wait_ms(10);
Nakor 0:8ab3a8aaf559 85 _sense = new AnalogIn(_sensor);
Nakor 0:8ab3a8aaf559 86 float value = *_sense;
Nakor 0:8ab3a8aaf559 87 delete _sense;
Nakor 0:8ab3a8aaf559 88
Nakor 0:8ab3a8aaf559 89 if(value >= 1.0)
Nakor 0:8ab3a8aaf559 90 {
Nakor 0:8ab3a8aaf559 91 _touchFlag = 0x01;
Nakor 0:8ab3a8aaf559 92 falseCounter = 0;
Nakor 0:8ab3a8aaf559 93 return true;
Nakor 0:8ab3a8aaf559 94 }
Nakor 0:8ab3a8aaf559 95 else
Nakor 0:8ab3a8aaf559 96 {
Nakor 0:8ab3a8aaf559 97 falseCounter++;
Nakor 0:8ab3a8aaf559 98 }
Nakor 0:8ab3a8aaf559 99
Nakor 0:8ab3a8aaf559 100
Nakor 0:8ab3a8aaf559 101 if(falseCounter > 5)
Nakor 0:8ab3a8aaf559 102 {
Nakor 0:8ab3a8aaf559 103 _untouchedFlag = 0x01;
Nakor 0:8ab3a8aaf559 104 falseCounter = 0;
Nakor 0:8ab3a8aaf559 105 }
Nakor 0:8ab3a8aaf559 106 return false;
Nakor 0:8ab3a8aaf559 107 }
Nakor 0:8ab3a8aaf559 108
Nakor 0:8ab3a8aaf559 109
Nakor 0:8ab3a8aaf559 110 float theBadTouch::badPlace()
Nakor 0:8ab3a8aaf559 111 {
Nakor 0:8ab3a8aaf559 112 _precharge = new DigitalInOut(_sensor);
Nakor 0:8ab3a8aaf559 113 _precharge->output();
Nakor 0:8ab3a8aaf559 114 (*_precharge) = 1;
Nakor 0:8ab3a8aaf559 115 _precharge->input();
Nakor 0:8ab3a8aaf559 116 _precharge->mode(PullNone);
Nakor 0:8ab3a8aaf559 117 delete _precharge;
Nakor 0:8ab3a8aaf559 118 wait_ms(10);
Nakor 0:8ab3a8aaf559 119 _sense = new AnalogIn(_sensor);
Nakor 0:8ab3a8aaf559 120 float value = *_sense;
Nakor 0:8ab3a8aaf559 121 delete _sense;
Nakor 0:8ab3a8aaf559 122
Nakor 0:8ab3a8aaf559 123 return value;
Nakor 0:8ab3a8aaf559 124 }