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.
IRSensor.cpp
00001 /* 00002 * IRSensor.h 00003 * Copyright (c) 2020, ZHAW 00004 * All rights reserved. 00005 */ 00006 00007 #include <cmath> 00008 #include "IRSensor.h" 00009 00010 using namespace std; 00011 00012 /** 00013 * Creates and initialises the driver to read the distance sensors. 00014 * @param distance the analog input to read a distance value from. 00015 * @param bit0 a digital output to control the multiplexer. 00016 * @param bit1 a digital output to control the multiplexer. 00017 * @param bit2 a digital output to control the multiplexer. 00018 * @param number the number of the sensor. This value must be between 0 and 5. 00019 */ 00020 IRSensor::IRSensor(AnalogIn& distance, DigitalOut& bit0, DigitalOut& bit1, DigitalOut& bit2, int number) : distance(distance), bit0(bit0), bit1(bit1), bit2(bit2) { 00021 00022 this->number = number; 00023 } 00024 00025 /** 00026 * Deletes this IRSensor object and releases all allocated resources. 00027 */ 00028 IRSensor::~IRSensor() {} 00029 00030 /** 00031 * This method reads from the distance sensor. 00032 * @return a distance value, given in [m]. 00033 */ 00034 float IRSensor::read() { 00035 00036 bit0 = (number >> 0) & 1; 00037 bit1 = (number >> 1) & 1; 00038 bit2 = (number >> 2) & 1; 00039 00040 float d = -0.58f*sqrt(distance)+0.58f; // calculate the distance in [m] 00041 00042 return d; 00043 } 00044 00045 /** 00046 * The empty operator is a shorthand notation of the <code>read()</code> method. 00047 */ 00048 IRSensor::operator float() { 00049 00050 return read(); 00051 } 00052
Generated on Sat Jul 23 2022 17:01:00 by
