TSI

Dependencies:   TSI

Fork of TSI_sample by William Marsh

Revision:
0:4374caa1ef17
Child:
1:e6ffa08ad8bf
diff -r 000000000000 -r 4374caa1ef17 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Feb 15 11:45:56 2017 +0000
@@ -0,0 +1,59 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "TSISensor.h"
+
+// Example program for lab 5
+// -------------------------
+//  A value is read from the touch sensor and use
+//    to control two LEDs
+//  The value is also output to the serial interface
+
+Serial pc(USBTX, USBRX); // tx, rx
+DigitalOut redLED(LED_RED);
+DigitalOut greenLED(LED_GREEN);
+TSISensor tsi;
+
+Thread redThread ; // thread for red LED
+Thread greenThread ; // thread for green LED
+ 
+void red_thread() {  // method to run in thread
+    while (true) {
+        Thread::signal_wait(0x1);
+        redLED = false ; // turn on 
+        Thread::wait(5000);
+        redLED = true ; // turn off 
+        redThread.signal_clr(0x1) ;
+          // Signal are automatically cleared by wait_signal but
+          // the signal might have been set again while LED on 
+    }
+}
+
+void green_thread() {  // method to run in thread
+    while (true) {
+        Thread::signal_wait(0x1);
+        greenLED = false ; // turn on 
+        Thread::wait(5000);
+        greenLED = true ; // turn off 
+        greenThread.signal_clr(0x1) ;
+          // Signal are automatically cleared by wait_signal but
+          // the signal might have been set again while LED on 
+    }
+}
+
+int main(void) {
+    redLED = true ; // turn off 
+    greenLED = true ; // turn off 
+    redThread.start(&red_thread) ; // start the red thread
+    greenThread.start(&green_thread) ; // start the green thread
+    
+    while (true) {
+        uint8_t d = tsi.readDistance() ;  // Distance is between 0 and 39
+                                          // When no touch --> 0
+                                          // Left --> low value  Right --> high value
+        pc.printf("%d", d) ;  
+        pc.putc(' ') ;                                
+        Thread::wait(200);
+        if (d == 10) redThread.signal_set(0x1) ;
+        if (d == 20) greenThread.signal_set(0x1) ;
+    }
+}
\ No newline at end of file