Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
sensor.cpp@66:a89b7430b424, 2017-01-23 (annotated)
- Committer:
- pannaanna
- Date:
- Mon Jan 23 13:22:21 2017 +0100
- Revision:
- 66:a89b7430b424
- Parent:
- 47:9e21b199c679
3rd quartile for sound sensor
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| pannaannap | 27:27cffdb2e9d3 | 1 | #include "sensor.h" |
| pannaannap | 27:27cffdb2e9d3 | 2 | |
| pannaanna | 66:a89b7430b424 | 3 | #include <algorithm> |
| pannaanna | 66:a89b7430b424 | 4 | |
| pannaannap | 27:27cffdb2e9d3 | 5 | Sensor::Sensor(SENSOR_TYPE id) : sensor_id_(id) {} |
| pannaannap | 27:27cffdb2e9d3 | 6 | |
| sbarzowski |
47:9e21b199c679 | 7 | const float DigitalSensor::SEND_INTERVAL = 10.0; |
| pannaannap | 27:27cffdb2e9d3 | 8 | |
| pannaannap | 27:27cffdb2e9d3 | 9 | DigitalSensor::DigitalSensor(SENSOR_TYPE id, PinName pin) : |
| pannaannap | 27:27cffdb2e9d3 | 10 | Sensor(id), sensor_(DigitalIn(pin)), |
| pannaannap | 27:27cffdb2e9d3 | 11 | last_state_(false), changes_counter_(0) { |
| pannaannap | 27:27cffdb2e9d3 | 12 | sensor_.mode(PullDown); |
| pannaannap | 27:27cffdb2e9d3 | 13 | } |
| pannaannap | 27:27cffdb2e9d3 | 14 | |
| pannaannap | 27:27cffdb2e9d3 | 15 | void DigitalSensor::updateState() { |
| pannaannap | 27:27cffdb2e9d3 | 16 | bool state = sensor_.read(); |
| sbarzowski |
33:d3cc00e39e6a | 17 | |
| pannaannap | 27:27cffdb2e9d3 | 18 | if (last_state_ != state) { |
| pannaannap | 27:27cffdb2e9d3 | 19 | last_state_ = state; |
| pannaannap | 27:27cffdb2e9d3 | 20 | changes_counter_++; |
| pannaannap | 27:27cffdb2e9d3 | 21 | } |
| pannaannap | 27:27cffdb2e9d3 | 22 | } |
| pannaannap | 27:27cffdb2e9d3 | 23 | |
| pannaannap | 27:27cffdb2e9d3 | 24 | Data DigitalSensor::dataToSend() { |
| pannaannap | 27:27cffdb2e9d3 | 25 | return Data(sensor_id_, changes_counter_); |
| pannaannap | 27:27cffdb2e9d3 | 26 | } |
| pannaannap | 27:27cffdb2e9d3 | 27 | |
| pannaannap | 27:27cffdb2e9d3 | 28 | void DigitalSensor::resetState() { |
| pannaannap | 27:27cffdb2e9d3 | 29 | changes_counter_ = 0; |
| pannaannap | 27:27cffdb2e9d3 | 30 | } |
| pannaannap | 27:27cffdb2e9d3 | 31 | |
| sbarzowski |
47:9e21b199c679 | 32 | const float AnalogSensor::SEND_INTERVAL = 8.0; |
| pannaannap | 27:27cffdb2e9d3 | 33 | |
| pannaannap | 27:27cffdb2e9d3 | 34 | AnalogSensor::AnalogSensor(SENSOR_TYPE id, PinName pin) : |
| pannaannap | 27:27cffdb2e9d3 | 35 | Sensor(id), sensor_(AnalogIn(pin)) { |
| pannaannap | 27:27cffdb2e9d3 | 36 | } |
| pannaannap | 27:27cffdb2e9d3 | 37 | |
| pannaannap | 27:27cffdb2e9d3 | 38 | void AnalogSensor::updateState() {} |
| pannaannap | 27:27cffdb2e9d3 | 39 | |
| pannaannap | 27:27cffdb2e9d3 | 40 | Data AnalogSensor::dataToSend() { |
| pannaannap | 27:27cffdb2e9d3 | 41 | float data_read = sensor_.read(); |
| pannaannap | 27:27cffdb2e9d3 | 42 | return Data(sensor_id_, data_read); |
| pannaannap | 27:27cffdb2e9d3 | 43 | } |
| pannaannap | 27:27cffdb2e9d3 | 44 | |
| sbarzowski |
33:d3cc00e39e6a | 45 | void AnalogSensor::resetState() {} |
| pannaanna | 66:a89b7430b424 | 46 | |
| pannaanna | 66:a89b7430b424 | 47 | SoundSensor::SoundSensor(SENSOR_TYPE id, PinName pin) : |
| pannaanna | 66:a89b7430b424 | 48 | AnalogSensor(id, pin), values_() { |
| pannaanna | 66:a89b7430b424 | 49 | } |
| pannaanna | 66:a89b7430b424 | 50 | |
| pannaanna | 66:a89b7430b424 | 51 | void SoundSensor::updateState() { |
| pannaanna | 66:a89b7430b424 | 52 | float data_read = sensor_.read(); |
| pannaanna | 66:a89b7430b424 | 53 | values_.push_back(data_read); |
| pannaanna | 66:a89b7430b424 | 54 | } |
| pannaanna | 66:a89b7430b424 | 55 | |
| pannaanna | 66:a89b7430b424 | 56 | Data SoundSensor::dataToSend() { |
| pannaanna | 66:a89b7430b424 | 57 | std::sort(values_.begin(), values_.end()); |
| pannaanna | 66:a89b7430b424 | 58 | int q3_index = values_.size() * 0.75; |
| pannaanna | 66:a89b7430b424 | 59 | float q3 = values_[q3_index]; |
| pannaanna | 66:a89b7430b424 | 60 | return Data(sensor_id_, q3); |
| pannaanna | 66:a89b7430b424 | 61 | } |
| pannaanna | 66:a89b7430b424 | 62 | |
| pannaanna | 66:a89b7430b424 | 63 | void SoundSensor::resetState() { |
| pannaanna | 66:a89b7430b424 | 64 | values_.clear(); |
| pannaanna | 66:a89b7430b424 | 65 | } |
| pannaanna | 66:a89b7430b424 | 66 | |
| pannaanna | 66:a89b7430b424 | 67 |