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.
Dependencies: mbed
SensorControl/lineSensor.h@1:813f4b17ae65, 2019-03-03 (annotated)
- Committer:
- mazdo25
- Date:
- Sun Mar 03 00:54:07 2019 +0000
- Revision:
- 1:813f4b17ae65
- Child:
- 3:01b5e80d842d
Buggy project
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| mazdo25 | 1:813f4b17ae65 | 1 | class lineSensor |
| mazdo25 | 1:813f4b17ae65 | 2 | { |
| mazdo25 | 1:813f4b17ae65 | 3 | |
| mazdo25 | 1:813f4b17ae65 | 4 | private: |
| mazdo25 | 1:813f4b17ae65 | 5 | DigitalOut emitter; |
| mazdo25 | 1:813f4b17ae65 | 6 | AnalogIn receiver; |
| mazdo25 | 1:813f4b17ae65 | 7 | float static const vREF = 3.3f; |
| mazdo25 | 1:813f4b17ae65 | 8 | Timeout sampleTime; |
| mazdo25 | 1:813f4b17ae65 | 9 | float lineVoltage; |
| mazdo25 | 1:813f4b17ae65 | 10 | |
| mazdo25 | 1:813f4b17ae65 | 11 | public: |
| mazdo25 | 1:813f4b17ae65 | 12 | |
| mazdo25 | 1:813f4b17ae65 | 13 | lineSensor(PinName E, PinName R):emitter(E), receiver(R) |
| mazdo25 | 1:813f4b17ae65 | 14 | { |
| mazdo25 | 1:813f4b17ae65 | 15 | sampleTime.detach(); |
| mazdo25 | 1:813f4b17ae65 | 16 | } |
| mazdo25 | 1:813f4b17ae65 | 17 | |
| mazdo25 | 1:813f4b17ae65 | 18 | //Turn on the emitter i.e emit a light |
| mazdo25 | 1:813f4b17ae65 | 19 | void turnOn(void) |
| mazdo25 | 1:813f4b17ae65 | 20 | { |
| mazdo25 | 1:813f4b17ae65 | 21 | emitter.write(1); |
| mazdo25 | 1:813f4b17ae65 | 22 | } |
| mazdo25 | 1:813f4b17ae65 | 23 | |
| mazdo25 | 1:813f4b17ae65 | 24 | //turn off the emitter i.e don't emit a light |
| mazdo25 | 1:813f4b17ae65 | 25 | void turnOff(void) |
| mazdo25 | 1:813f4b17ae65 | 26 | { |
| mazdo25 | 1:813f4b17ae65 | 27 | emitter.write(0); |
| mazdo25 | 1:813f4b17ae65 | 28 | } |
| mazdo25 | 1:813f4b17ae65 | 29 | |
| mazdo25 | 1:813f4b17ae65 | 30 | //toggle the emitter i.e if its on turn it off, if its off turn it on |
| mazdo25 | 1:813f4b17ae65 | 31 | void toggleEmitter(void) |
| mazdo25 | 1:813f4b17ae65 | 32 | { |
| mazdo25 | 1:813f4b17ae65 | 33 | emitter.write(!emitter.read()); |
| mazdo25 | 1:813f4b17ae65 | 34 | } |
| mazdo25 | 1:813f4b17ae65 | 35 | |
| mazdo25 | 1:813f4b17ae65 | 36 | //return an int representing the state of the emitter i.e is it on or off where 1 represents on and 0 represents off |
| mazdo25 | 1:813f4b17ae65 | 37 | int returnEmitterState(void) |
| mazdo25 | 1:813f4b17ae65 | 38 | { |
| mazdo25 | 1:813f4b17ae65 | 39 | return emitter.read(); |
| mazdo25 | 1:813f4b17ae65 | 40 | } |
| mazdo25 | 1:813f4b17ae65 | 41 | |
| mazdo25 | 1:813f4b17ae65 | 42 | void calcLineVoltage(void) |
| mazdo25 | 1:813f4b17ae65 | 43 | { |
| mazdo25 | 1:813f4b17ae65 | 44 | lineVoltage = receiver.read() * vREF; |
| mazdo25 | 1:813f4b17ae65 | 45 | turnOff(); |
| mazdo25 | 1:813f4b17ae65 | 46 | } |
| mazdo25 | 1:813f4b17ae65 | 47 | |
| mazdo25 | 1:813f4b17ae65 | 48 | float returnLineVoltage(void) |
| mazdo25 | 1:813f4b17ae65 | 49 | { |
| mazdo25 | 1:813f4b17ae65 | 50 | return lineVoltage; |
| mazdo25 | 1:813f4b17ae65 | 51 | } |
| mazdo25 | 1:813f4b17ae65 | 52 | |
| mazdo25 | 1:813f4b17ae65 | 53 | void takeReading() |
| mazdo25 | 1:813f4b17ae65 | 54 | { |
| mazdo25 | 1:813f4b17ae65 | 55 | turnOn(); |
| mazdo25 | 1:813f4b17ae65 | 56 | sampleTime.attach(callback(this, &lineSensor::calcLineVoltage),0.09); //time till turn off |
| mazdo25 | 1:813f4b17ae65 | 57 | } |
| mazdo25 | 1:813f4b17ae65 | 58 | |
| mazdo25 | 1:813f4b17ae65 | 59 | }; |