Marco Oehler / Mbed 2 deprecated ROME2

Dependencies:   mbed

Committer:
oehlemar
Date:
Mon Feb 24 16:05:50 2020 +0000
Revision:
0:7ee4c6416e08
ROME2 P1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oehlemar 0:7ee4c6416e08 1 /*
oehlemar 0:7ee4c6416e08 2 * IRSensor.h
oehlemar 0:7ee4c6416e08 3 * Copyright (c) 2020, ZHAW
oehlemar 0:7ee4c6416e08 4 * All rights reserved.
oehlemar 0:7ee4c6416e08 5 */
oehlemar 0:7ee4c6416e08 6
oehlemar 0:7ee4c6416e08 7 #include <cmath>
oehlemar 0:7ee4c6416e08 8 #include "IRSensor.h"
oehlemar 0:7ee4c6416e08 9
oehlemar 0:7ee4c6416e08 10 using namespace std;
oehlemar 0:7ee4c6416e08 11
oehlemar 0:7ee4c6416e08 12 /**
oehlemar 0:7ee4c6416e08 13 * Creates and initialises the driver to read the distance sensors.
oehlemar 0:7ee4c6416e08 14 * @param distance the analog input to read a distance value from.
oehlemar 0:7ee4c6416e08 15 * @param bit0 a digital output to control the multiplexer.
oehlemar 0:7ee4c6416e08 16 * @param bit1 a digital output to control the multiplexer.
oehlemar 0:7ee4c6416e08 17 * @param bit2 a digital output to control the multiplexer.
oehlemar 0:7ee4c6416e08 18 * @param number the number of the sensor. This value must be between 0 and 5.
oehlemar 0:7ee4c6416e08 19 */
oehlemar 0:7ee4c6416e08 20 IRSensor::IRSensor(AnalogIn& distance, DigitalOut& bit0, DigitalOut& bit1, DigitalOut& bit2, int number) : distance(distance), bit0(bit0), bit1(bit1), bit2(bit2) {
oehlemar 0:7ee4c6416e08 21
oehlemar 0:7ee4c6416e08 22 this->number = number;
oehlemar 0:7ee4c6416e08 23 }
oehlemar 0:7ee4c6416e08 24
oehlemar 0:7ee4c6416e08 25 /**
oehlemar 0:7ee4c6416e08 26 * Deletes this IRSensor object and releases all allocated resources.
oehlemar 0:7ee4c6416e08 27 */
oehlemar 0:7ee4c6416e08 28 IRSensor::~IRSensor() {}
oehlemar 0:7ee4c6416e08 29
oehlemar 0:7ee4c6416e08 30 /**
oehlemar 0:7ee4c6416e08 31 * This method reads from the distance sensor.
oehlemar 0:7ee4c6416e08 32 * @return a distance value, given in [m].
oehlemar 0:7ee4c6416e08 33 */
oehlemar 0:7ee4c6416e08 34 float IRSensor::read() {
oehlemar 0:7ee4c6416e08 35
oehlemar 0:7ee4c6416e08 36 // bitte implementieren!
oehlemar 0:7ee4c6416e08 37
oehlemar 0:7ee4c6416e08 38 float d;
oehlemar 0:7ee4c6416e08 39 switch(number) {
oehlemar 0:7ee4c6416e08 40 case 0:
oehlemar 0:7ee4c6416e08 41 bit0 = 0; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
oehlemar 0:7ee4c6416e08 42 bit1 = 0;
oehlemar 0:7ee4c6416e08 43 bit2 = 0;
oehlemar 0:7ee4c6416e08 44 break;
oehlemar 0:7ee4c6416e08 45 case 1:
oehlemar 0:7ee4c6416e08 46 bit0 = 1; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
oehlemar 0:7ee4c6416e08 47 bit1 = 0;
oehlemar 0:7ee4c6416e08 48 bit2 = 0;
oehlemar 0:7ee4c6416e08 49 break;
oehlemar 0:7ee4c6416e08 50 case 2:
oehlemar 0:7ee4c6416e08 51 bit0 = 0; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
oehlemar 0:7ee4c6416e08 52 bit1 = 1;
oehlemar 0:7ee4c6416e08 53 bit2 = 0;
oehlemar 0:7ee4c6416e08 54 break;
oehlemar 0:7ee4c6416e08 55 case 3:
oehlemar 0:7ee4c6416e08 56 bit0 = 1; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
oehlemar 0:7ee4c6416e08 57 bit1 = 1;
oehlemar 0:7ee4c6416e08 58 bit2 = 0;
oehlemar 0:7ee4c6416e08 59 break;
oehlemar 0:7ee4c6416e08 60 case 4:
oehlemar 0:7ee4c6416e08 61 bit0 = 0; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
oehlemar 0:7ee4c6416e08 62 bit1 = 0;
oehlemar 0:7ee4c6416e08 63 bit2 = 1;
oehlemar 0:7ee4c6416e08 64 break;
oehlemar 0:7ee4c6416e08 65 case 5:
oehlemar 0:7ee4c6416e08 66 bit0 = 1; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
oehlemar 0:7ee4c6416e08 67 bit1 = 0;
oehlemar 0:7ee4c6416e08 68 bit2 = 1;
oehlemar 0:7ee4c6416e08 69 break;
oehlemar 0:7ee4c6416e08 70
oehlemar 0:7ee4c6416e08 71 }
oehlemar 0:7ee4c6416e08 72
oehlemar 0:7ee4c6416e08 73 d = -0.58f*sqrt(distance)+0.58f; // Lesen der Distanz in [m]
oehlemar 0:7ee4c6416e08 74 return d;
oehlemar 0:7ee4c6416e08 75 }