-
Notifications
You must be signed in to change notification settings - Fork 0
/
IDMS.cpp
92 lines (87 loc) · 1.27 KB
/
IDMS.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/* IDMS.cpp - Infrared Distance Measuring Sensor Library
*
*/
#include "Arduino.h"
#include "IDMS.h"
/* IDMS
*
* Description
* Infrared distance measuring sensor.
*
* Infrared ()
*
* Parameters
* none
*
* Returns
* void
*/
IDMS::IDMS() {
_type = GP2Y0A21YK0F;
}
/* attach
*
* Description
* Set sensor Arduino pin.
*
* attach (byte pin)
*
* Parameters
* pin: Arduino pin connected to Signal sensor output
*
* Returns
* void
*/
void IDMS::attach(byte pin) {
pinMode(pin, INPUT);
_pin = pin;
}
/* type
*
* Description
* Set sensor type.
*
* sensor.type()
*
* Parameters
* type:
* Valid values: GP2Y0A21YK0F (default)
*
* Returns
* void
*/
void IDMS::type(byte type) {
_type = type;
//
switch (_type) {
default:
case GP2Y0A21YK0F: {
_range = 80;
break;
}
case GP2Y0A02YK: {
_range = 150;
break;
}
}
}
/* read
*
* Description
* Get sensor distance.
*
* sensor.read()
*
* Parameters
* none
*
* Returns
* float: distance to nearest bulkhead (centimeters)
*/
float IDMS::read() {
float distance;
pinMode(_pin, INPUT);
distance = 27.728 *
pow(map(analogRead(_pin), 0, 1023, 0, 5000) / 1000.0, -1.2045);
return distance;
}