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