ROME_Praktikum / Mbed 2 deprecated Rome_P_3

Dependencies:   mbed

Committer:
Jacqueline
Date:
Tue Mar 31 11:58:30 2020 +0000
Revision:
0:20ec9d702676
Praktikum_3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jacqueline 0:20ec9d702676 1 /*
Jacqueline 0:20ec9d702676 2 * IRSensor.h
Jacqueline 0:20ec9d702676 3 * Copyright (c) 2020, ZHAW
Jacqueline 0:20ec9d702676 4 * All rights reserved.
Jacqueline 0:20ec9d702676 5 */
Jacqueline 0:20ec9d702676 6
Jacqueline 0:20ec9d702676 7 #include <cmath>
Jacqueline 0:20ec9d702676 8 #include "IRSensor.h"
Jacqueline 0:20ec9d702676 9
Jacqueline 0:20ec9d702676 10 using namespace std;
Jacqueline 0:20ec9d702676 11
Jacqueline 0:20ec9d702676 12 /**
Jacqueline 0:20ec9d702676 13 * Creates and initialises the driver to read the distance sensors.
Jacqueline 0:20ec9d702676 14 * @param distance the analog input to read a distance value from.
Jacqueline 0:20ec9d702676 15 * @param bit0 a digital output to control the multiplexer.
Jacqueline 0:20ec9d702676 16 * @param bit1 a digital output to control the multiplexer.
Jacqueline 0:20ec9d702676 17 * @param bit2 a digital output to control the multiplexer.
Jacqueline 0:20ec9d702676 18 * @param number the number of the sensor. This value must be between 0 and 5.
Jacqueline 0:20ec9d702676 19 */
Jacqueline 0:20ec9d702676 20 IRSensor::IRSensor(AnalogIn& distance, DigitalOut& bit0, DigitalOut& bit1, DigitalOut& bit2, int number) : distance(distance), bit0(bit0), bit1(bit1), bit2(bit2) {
Jacqueline 0:20ec9d702676 21
Jacqueline 0:20ec9d702676 22 this->number = number;
Jacqueline 0:20ec9d702676 23 }
Jacqueline 0:20ec9d702676 24
Jacqueline 0:20ec9d702676 25 /**
Jacqueline 0:20ec9d702676 26 * Deletes this IRSensor object and releases all allocated resources.
Jacqueline 0:20ec9d702676 27 */
Jacqueline 0:20ec9d702676 28 IRSensor::~IRSensor() {}
Jacqueline 0:20ec9d702676 29
Jacqueline 0:20ec9d702676 30 /**
Jacqueline 0:20ec9d702676 31 * This method reads from the distance sensor.
Jacqueline 0:20ec9d702676 32 * @return a distance value, given in [m].
Jacqueline 0:20ec9d702676 33 */
Jacqueline 0:20ec9d702676 34 float IRSensor::read() {
Jacqueline 0:20ec9d702676 35
Jacqueline 0:20ec9d702676 36 bit0 = (number >> 0) & 1;
Jacqueline 0:20ec9d702676 37 bit1 = (number >> 1) & 1;
Jacqueline 0:20ec9d702676 38 bit2 = (number >> 2) & 1;
Jacqueline 0:20ec9d702676 39
Jacqueline 0:20ec9d702676 40 float d = -0.58f*sqrt(distance)+0.58f; // calculate the distance in [m]
Jacqueline 0:20ec9d702676 41
Jacqueline 0:20ec9d702676 42 return d;
Jacqueline 0:20ec9d702676 43 }
Jacqueline 0:20ec9d702676 44
Jacqueline 0:20ec9d702676 45 /**
Jacqueline 0:20ec9d702676 46 * The empty operator is a shorthand notation of the <code>read()</code> method.
Jacqueline 0:20ec9d702676 47 */
Jacqueline 0:20ec9d702676 48 IRSensor::operator float() {
Jacqueline 0:20ec9d702676 49
Jacqueline 0:20ec9d702676 50 return read();
Jacqueline 0:20ec9d702676 51 }
Jacqueline 0:20ec9d702676 52