![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
25.04.17
Dependencies: mbed
Fork of Sensortest by
Diff: IRSensor.cpp
- Revision:
- 0:fb3f7c677c18
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IRSensor.cpp Thu Apr 13 08:30:35 2017 +0000 @@ -0,0 +1,44 @@ +#include "IRSensor.h" +#include <cmath> + +//E. Hess +//IRSensor.cpp + +//Konstruktor -> Erstellt ein IRSensor-Objekt +//AnalogIn* distance -> Liest die Voltanzahl des Sensors aus +//DigitalOut* bit0, bit1, bit2 -> Binär-Outputs wählen die 6 Sensoren an +//Int number -> Sensornummer als int (0-5) + +IRSensor::IRSensor() {} + +IRSensor::IRSensor(AnalogIn* distance, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number) { + this->distance = distance; //Weist den Objektvariablen, die eingegebenen Werte zu + this->bit0 = bit0; + this->bit1 = bit1; + this->bit2 = bit2; + this->number = number; +} + +//Destruktor -> Löscht das IRSensor-Objekt +IRSensor::~IRSensor() {} + +//Initialisiert nachträglich +void IRSensor::init(AnalogIn* distance, DigitalOut* bit0, DigitalOut* bit1, DigitalOut* bit2, int number) { + this->distance = distance; //Weist den Objektvariablen, die eingegebenen Werte zu + this->bit0 = bit0; + this->bit1 = bit1; + this->bit2 = bit2; + this->number = number; +} + +//Distanzrechner +float IRSensor::read() +{ + *bit0 = (number >> 0) & 1; //Vergleicht das Least-Significant-Bit von number mit 1 und setzt *bit0 (z.B. 5: 0000'0101 & 0000'0001 == 0000'0001) + *bit1 = (number >> 1) & 1; //Vergleicht das zweite Bit von rechts + *bit2 = (number >> 2) & 1; //Vergleicht das dritte Bit von rechts + + float d = distance->read(); + return d; +} +