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 :)
theBadTouch.cpp@0:8ab3a8aaf559, 2011-01-31 (annotated)
- 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?
User | Revision | Line number | New 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 | } |