A compilation of some hardware sensors and their shared programming interfaces.

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TouchSensor.cpp Source File

TouchSensor.cpp

00001 /* TouchSensor.cpp
00002  * Tested with mbed board: FRDM-KL46Z
00003  * Author: Mark Gottscho
00004  * mgottscho@ucla.edu
00005  */
00006  
00007 #include "mbed.h"
00008 #include "TouchSensor.h"
00009 #include "PeriodicSensor.h"
00010 
00011 TouchSensor::TouchSensor() :
00012                 PeriodicSensor(0.005), //default min sampling rate of 200 Hz
00013                 __sensor(),
00014                 __distance(0),
00015                 __percentage(0)
00016                 {
00017 }
00018 
00019 TouchSensor::~TouchSensor() { }
00020 
00021 float TouchSensor::getPercentage(bool sampleNow) {
00022     __disable_irq();
00023     if (sampleNow) {
00024         __percentage = __sensor.readPercentage();
00025     }
00026     
00027     __dataReady = false;
00028     __enable_irq();
00029     
00030     return __percentage;
00031 }
00032 
00033 uint8_t TouchSensor::getDistance(bool sampleNow) {
00034     __disable_irq();
00035     if (sampleNow) {
00036         __distance = __sensor.readDistance();
00037     }
00038     
00039     __dataReady = false;
00040     __enable_irq();
00041     
00042     return __distance;   
00043 }
00044 
00045 void TouchSensor::__sample_data_ISR() {
00046     getDistance(true);
00047     getPercentage(true);
00048     __dataReady = true;
00049 }