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:
Thu Feb 03 19:58:19 2011 +0000
Revision:
5:e1e14d61dd00
Parent:
4:7e7c93d90d99

        

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 1:69d0b1c11c73 17 _touchCounter = 0x00;
Nakor 0:8ab3a8aaf559 18 }
Nakor 0:8ab3a8aaf559 19
Nakor 0:8ab3a8aaf559 20
Nakor 0:8ab3a8aaf559 21
Nakor 0:8ab3a8aaf559 22 /******************/
Nakor 0:8ab3a8aaf559 23 /* Protected */
Nakor 0:8ab3a8aaf559 24 /******************/
Nakor 0:8ab3a8aaf559 25
Nakor 0:8ab3a8aaf559 26
Nakor 0:8ab3a8aaf559 27
Nakor 0:8ab3a8aaf559 28
Nakor 0:8ab3a8aaf559 29 /******************/
Nakor 0:8ab3a8aaf559 30 /* Public */
Nakor 0:8ab3a8aaf559 31 /******************/
Nakor 0:8ab3a8aaf559 32 // _touchFlag
Nakor 0:8ab3a8aaf559 33 // 0x00 = Free (untouched long enough to be available for instant touch)
Nakor 0:8ab3a8aaf559 34 // 0x01 = being touched
Nakor 0:8ab3a8aaf559 35 // 0x02 = Timing length of time sensor is untouched
Nakor 0:8ab3a8aaf559 36
Nakor 0:8ab3a8aaf559 37 char theBadTouch::isTouch()
Nakor 0:8ab3a8aaf559 38 {
Nakor 4:7e7c93d90d99 39 if(falseCounter > 5)
Nakor 0:8ab3a8aaf559 40 {
Nakor 0:8ab3a8aaf559 41 _untouchedFlag = 0x01;
Nakor 0:8ab3a8aaf559 42 falseCounter = 0;
Nakor 0:8ab3a8aaf559 43 return 0x00;
Nakor 0:8ab3a8aaf559 44 }
Nakor 1:69d0b1c11c73 45
Nakor 1:69d0b1c11c73 46
Nakor 1:69d0b1c11c73 47
Nakor 0:8ab3a8aaf559 48
Nakor 5:e1e14d61dd00 49 if(badPlace() >= 0.8)
Nakor 0:8ab3a8aaf559 50 {
Nakor 4:7e7c93d90d99 51 /*
Nakor 3:4c73b047af50 52 if(_touchCounter < 0x03)
Nakor 1:69d0b1c11c73 53 {
Nakor 1:69d0b1c11c73 54 _touchCounter++;
Nakor 1:69d0b1c11c73 55 return false;
Nakor 1:69d0b1c11c73 56 }
Nakor 1:69d0b1c11c73 57 else
Nakor 1:69d0b1c11c73 58 {
Nakor 1:69d0b1c11c73 59 _touchCounter = 0x00;
Nakor 1:69d0b1c11c73 60 }
Nakor 4:7e7c93d90d99 61 */
Nakor 0:8ab3a8aaf559 62 if(_untouchedFlag == 0x01)
Nakor 0:8ab3a8aaf559 63 {
Nakor 0:8ab3a8aaf559 64 _untouchedFlag = 0x00;
Nakor 0:8ab3a8aaf559 65 return 0x01;
Nakor 0:8ab3a8aaf559 66 }
Nakor 0:8ab3a8aaf559 67 else
Nakor 0:8ab3a8aaf559 68 {
Nakor 0:8ab3a8aaf559 69 t.reset();
Nakor 0:8ab3a8aaf559 70 for(int i = 0; i < 20; i++)
Nakor 0:8ab3a8aaf559 71 {
Nakor 5:e1e14d61dd00 72 //while(badPlace() >= 0.8)
Nakor 5:e1e14d61dd00 73 //{
Nakor 5:e1e14d61dd00 74 if(badPlace() >= 0.8)
Nakor 0:8ab3a8aaf559 75 {
Nakor 4:7e7c93d90d99 76 if(t.read_ms() > 200)
Nakor 0:8ab3a8aaf559 77 {
Nakor 0:8ab3a8aaf559 78 return 0x02;
Nakor 0:8ab3a8aaf559 79 }
Nakor 0:8ab3a8aaf559 80 }
Nakor 5:e1e14d61dd00 81 //}
Nakor 0:8ab3a8aaf559 82 }
Nakor 0:8ab3a8aaf559 83 }
Nakor 0:8ab3a8aaf559 84 }
Nakor 0:8ab3a8aaf559 85 else
Nakor 0:8ab3a8aaf559 86 {
Nakor 0:8ab3a8aaf559 87 falseCounter++;
Nakor 0:8ab3a8aaf559 88 return 0x00;
Nakor 0:8ab3a8aaf559 89 }
Nakor 0:8ab3a8aaf559 90
Nakor 0:8ab3a8aaf559 91 return 0x00;
Nakor 0:8ab3a8aaf559 92 }
Nakor 0:8ab3a8aaf559 93
Nakor 0:8ab3a8aaf559 94 float theBadTouch::badPlace()
Nakor 0:8ab3a8aaf559 95 {
Nakor 0:8ab3a8aaf559 96 _precharge = new DigitalInOut(_sensor);
Nakor 0:8ab3a8aaf559 97 _precharge->output();
Nakor 0:8ab3a8aaf559 98 (*_precharge) = 1;
Nakor 0:8ab3a8aaf559 99 _precharge->input();
Nakor 0:8ab3a8aaf559 100 _precharge->mode(PullNone);
Nakor 0:8ab3a8aaf559 101 delete _precharge;
Nakor 0:8ab3a8aaf559 102 wait_ms(10);
Nakor 0:8ab3a8aaf559 103 _sense = new AnalogIn(_sensor);
Nakor 0:8ab3a8aaf559 104 float value = *_sense;
Nakor 0:8ab3a8aaf559 105 delete _sense;
Nakor 0:8ab3a8aaf559 106
Nakor 5:e1e14d61dd00 107 printf("Value: %f\n", value);
Nakor 5:e1e14d61dd00 108 wait(.5);
Nakor 0:8ab3a8aaf559 109 return value;
Nakor 0:8ab3a8aaf559 110 }