Smartcar Shield
src
sensors
distance
infrared
analog
sharp
GP2Y0A21.cpp
Go to the documentation of this file.
1
#include "
GP2Y0A21.hpp
"
2
3
namespace
4
{
5
const
auto
kMinDistance = 12;
// GP2Y0A21's minimum distance
6
const
auto
kMaxDistance = 78;
// GP2Y0A21's maximum distance
7
}
// namespace
8
9
GP2Y0A21::GP2Y0A21
(
Runtime
& runtime, uint8_t pin)
10
:
InfraredAnalogSensor
(runtime)
11
, kPin{ pin }
12
, mRuntime(runtime)
13
{
14
}
15
16
unsigned
int
GP2Y0A21::getDistance
()
17
{
18
auto
analogReading = mRuntime.
getAnalogPinState
(kPin);
19
// Formula source: Jeroen Doggen http://plat.is/v3x25
20
// It's OK to surpress this clang-tidy warning since this is part of a magic (!) formula
21
// NOLINTNEXTLINE(readability-magic-numbers)
22
auto
result =
static_cast<
unsigned
int
>
(1 / (0.0002391473 * analogReading - 0.0100251467));
23
24
return
(result >= kMinDistance) && (result <= kMaxDistance) ? result : 0;
25
}
GP2Y0A21::GP2Y0A21
GP2Y0A21(Runtime &runtime, uint8_t pin)
Constructs a GP2Y0A21 sensor.
Definition:
GP2Y0A21.cpp:9
Runtime
Definition:
Runtime.hpp:35
InfraredAnalogSensor
Definition:
InfraredAnalogSensor.hpp:25
GP2Y0A21.hpp
GP2Y0A21::getDistance
unsigned int getDistance() override
Gets the distance measured by the sensor in centimeters.
Definition:
GP2Y0A21.cpp:16
Runtime::getAnalogPinState
virtual int getAnalogPinState(uint8_t pin)=0
Get pin's analog (ADC) reading, equivalent of analogRead in Arduino.
Generated by
1.8.17