For use in my acoustic touchscreen project, found here: http://hackaday.io/project/1990-Low-Cost-Touchscreen-Anywhere

Dependencies:   mbed

Committer:
ThatcherC
Date:
Sun Jul 27 21:31:20 2014 +0000
Revision:
1:62933cace87a
Parent:
0:d678323f9a72
Child:
2:2ccbee38f4a8
Added "Ready" message at startup

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ThatcherC 0:d678323f9a72 1 #include "mbed.h"
ThatcherC 0:d678323f9a72 2
ThatcherC 0:d678323f9a72 3 DigitalOut myled(dp1);
ThatcherC 0:d678323f9a72 4 DigitalOut led2(dp4);
ThatcherC 0:d678323f9a72 5 InterruptIn int1(dp14);
ThatcherC 0:d678323f9a72 6 InterruptIn int2(dp13);
ThatcherC 0:d678323f9a72 7 Timer t;
ThatcherC 0:d678323f9a72 8 Timeout reset;
ThatcherC 0:d678323f9a72 9 bool first = true;
ThatcherC 0:d678323f9a72 10 bool timeAvailable = false;
ThatcherC 0:d678323f9a72 11
ThatcherC 0:d678323f9a72 12 void reset1();
ThatcherC 0:d678323f9a72 13 void reset2();
ThatcherC 0:d678323f9a72 14
ThatcherC 0:d678323f9a72 15 float timeArray[3]; //important. this stores the delays between vibration detections
ThatcherC 0:d678323f9a72 16 //right now only indices 0 and 1 are used
ThatcherC 0:d678323f9a72 17 void flip1(){
ThatcherC 0:d678323f9a72 18 if(first){
ThatcherC 0:d678323f9a72 19 t.start();
ThatcherC 0:d678323f9a72 20 int1.fall(NULL);
ThatcherC 0:d678323f9a72 21 first = false;
ThatcherC 0:d678323f9a72 22 reset.attach(&reset1,0.01);
ThatcherC 0:d678323f9a72 23 }else{
ThatcherC 0:d678323f9a72 24 t.stop();
ThatcherC 0:d678323f9a72 25 timeArray[0]=t.read();
ThatcherC 0:d678323f9a72 26 reset.detach();
ThatcherC 0:d678323f9a72 27 timeAvailable=true;
ThatcherC 0:d678323f9a72 28 first = true;
ThatcherC 0:d678323f9a72 29 }
ThatcherC 0:d678323f9a72 30 myled = 1;
ThatcherC 0:d678323f9a72 31 }
ThatcherC 0:d678323f9a72 32
ThatcherC 0:d678323f9a72 33 void flip2(){
ThatcherC 0:d678323f9a72 34 if(first){
ThatcherC 0:d678323f9a72 35 t.start();
ThatcherC 0:d678323f9a72 36 int2.fall(NULL);
ThatcherC 0:d678323f9a72 37 first = false;
ThatcherC 0:d678323f9a72 38 reset.attach(&reset2,0.01);
ThatcherC 0:d678323f9a72 39 }else{
ThatcherC 0:d678323f9a72 40 t.stop();
ThatcherC 0:d678323f9a72 41 timeArray[1]=t.read();
ThatcherC 0:d678323f9a72 42 reset.detach();
ThatcherC 0:d678323f9a72 43 timeAvailable=true;
ThatcherC 0:d678323f9a72 44 first = true;
ThatcherC 0:d678323f9a72 45 }
ThatcherC 0:d678323f9a72 46 led2 = 1;
ThatcherC 0:d678323f9a72 47 }
ThatcherC 0:d678323f9a72 48
ThatcherC 0:d678323f9a72 49 void reset1(){
ThatcherC 0:d678323f9a72 50 t.stop();
ThatcherC 0:d678323f9a72 51 t.reset();
ThatcherC 0:d678323f9a72 52 first = true;
ThatcherC 0:d678323f9a72 53 int1.fall(&flip1);
ThatcherC 0:d678323f9a72 54 }
ThatcherC 0:d678323f9a72 55
ThatcherC 0:d678323f9a72 56 void reset2(){
ThatcherC 0:d678323f9a72 57 t.stop();
ThatcherC 0:d678323f9a72 58 t.reset();
ThatcherC 0:d678323f9a72 59 first = true;
ThatcherC 0:d678323f9a72 60 int2.fall(&flip2);
ThatcherC 0:d678323f9a72 61 }
ThatcherC 0:d678323f9a72 62
ThatcherC 0:d678323f9a72 63 int main() {
ThatcherC 1:62933cace87a 64 printf("Ready\n");
ThatcherC 0:d678323f9a72 65 int1.fall(&flip1);
ThatcherC 0:d678323f9a72 66 int2.fall(&flip2);
ThatcherC 0:d678323f9a72 67 timeArray[0] = 0;
ThatcherC 0:d678323f9a72 68 timeArray[1] = 0;
ThatcherC 0:d678323f9a72 69 timeArray[2] = 0; //for now this isn't used (only two sensors)
ThatcherC 0:d678323f9a72 70 while(1){
ThatcherC 0:d678323f9a72 71 if(timeAvailable){
ThatcherC 0:d678323f9a72 72 printf("[%f, %f]\n",timeArray[0],timeArray[1]);
ThatcherC 0:d678323f9a72 73 t.reset();
ThatcherC 0:d678323f9a72 74 timeArray[0] = 0;
ThatcherC 0:d678323f9a72 75 timeArray[1] = 0;
ThatcherC 0:d678323f9a72 76 timeArray[2] = 0; //for now this isn't used (only two sensors)
ThatcherC 0:d678323f9a72 77 timeAvailable=false;
ThatcherC 0:d678323f9a72 78 wait(.1);
ThatcherC 0:d678323f9a72 79 int1.fall(&flip1);
ThatcherC 0:d678323f9a72 80 int2.fall(&flip2);
ThatcherC 0:d678323f9a72 81 }
ThatcherC 0:d678323f9a72 82 }
ThatcherC 0:d678323f9a72 83 }