AlbaniGang / Mbed 2 deprecated Rome_P3

Dependencies:   mbed

Committer:
stollpa1
Date:
Wed Apr 08 09:13:33 2020 +0000
Revision:
1:bba0ec7e075a
Parent:
0:0a667cdbf4c1
P4 init;

Who changed what in which revision?

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