@@ -115,52 +115,68 @@ extern "C" void app_main(void) {
115
115
logger.info (" === range mapper ===" );
116
116
{
117
117
// ! [range_mapper example]
118
+ static constexpr float deadband = 12 .0f ;
119
+ static constexpr float min = 0 .0f ;
120
+ static constexpr float center = 127 .0f ;
121
+ static constexpr float max = 255 .0f ;
118
122
// Default will have output range [-1, 1]
119
- espp::RangeMapper<float > rm ({.center = 127 , .deadband = 12 , .minimum = 0 , .maximum = 255 });
123
+ espp::RangeMapper<float > rm (
124
+ {.center = center, .deadband = deadband, .minimum = min, .maximum = max});
120
125
// You can explicitly set output center/range. In this case the output will
121
126
// be in the range [0, 1024]
122
- espp::RangeMapper<float > rm2 ({.center = 127 ,
123
- .deadband = 12 ,
124
- .minimum = 0 ,
125
- .maximum = 255 ,
127
+ espp::RangeMapper<float > rm2 ({.center = center ,
128
+ .deadband = deadband ,
129
+ .minimum = min ,
130
+ .maximum = max ,
126
131
.output_center = 512 ,
127
132
.output_range = 512 });
128
133
// You can also invert the input distribution, such that input values are
129
134
// compared against the input min/max instead of input center. NOTE: this
130
135
// also showcases the use of a non-centered input distribution.
131
- espp::FloatRangeMapper rm3 ({.center = 0 ,
132
- .deadband = 12 ,
133
- .minimum = 0 ,
134
- .maximum = 255 ,
136
+ espp::FloatRangeMapper rm3 ({.center = center ,
137
+ .deadband = deadband ,
138
+ .minimum = min ,
139
+ .maximum = max ,
135
140
.invert_input = true ,
136
- .output_center = 0 ,
137
- .output_range = 1024 });
141
+ .output_center = 512 ,
142
+ .output_range = 512 });
138
143
// You can even invert the ouput distribution
139
144
espp::FloatRangeMapper rm4 ({
140
- .center = 127 ,
141
- .deadband = 12 ,
142
- .minimum = 0 ,
143
- .maximum = 255 ,
145
+ .center = center ,
146
+ .deadband = deadband ,
147
+ .minimum = min ,
148
+ .maximum = max ,
144
149
.invert_output = true ,
145
150
});
146
- auto vals =
147
- std::array<float , 14 >{-10 , 0 , 10 , 50 , 100 , 120 , 127 , 135 , 150 , 200 , 240 , 250 , 255 , 275 };
151
+ auto vals = std::vector<float >{min - 10 , min, min + 5 , min + 10 , min + deadband,
152
+ // should show as approx -.66 and -.33
153
+ min + (center - deadband - min) * .33f ,
154
+ min + (center - deadband - min) * .66f , center - deadband,
155
+ center - 7 , center, center + 7 , center + deadband,
156
+ // should show as approx .33 and .66
157
+ center + deadband + (max - center - deadband) * .33f ,
158
+ center + deadband + (max - center - deadband) * .66f ,
159
+ max - deadband, max - 10 , max - 5 , max, max + 10 };
148
160
// test the mapping and unmapping
149
161
fmt::print (" Mapping [0, 255] -> [-1, 1]\n " );
162
+ fmt::print (" % value, mapped, unmapped\n " );
150
163
for (const auto &v : vals) {
151
- fmt::print (" {} -> {} -> {} \n " , v, rm.map (v), rm.unmap (rm.map (v)));
164
+ fmt::print (" {}, {}, {} \n " , v, rm.map (v), rm.unmap (rm.map (v)));
152
165
}
153
166
fmt::print (" Mapping [0, 255] -> [0, 1024]\n " );
167
+ fmt::print (" % value, mapped, unmapped\n " );
154
168
for (const auto &v : vals) {
155
- fmt::print (" {} -> {} -> {} \n " , v, rm2.map (v), rm2.unmap (rm2.map (v)));
169
+ fmt::print (" {}, {}, {} \n " , v, rm2.map (v), rm2.unmap (rm2.map (v)));
156
170
}
157
171
fmt::print (" Mapping Inverted [0, 255] -> [1024, 0]\n " );
172
+ fmt::print (" % value, mapped, unmapped\n " );
158
173
for (const auto &v : vals) {
159
- fmt::print (" {} -> {} -> {} \n " , v, rm3.map (v), rm3.unmap (rm3.map (v)));
174
+ fmt::print (" {}, {}, {} \n " , v, rm3.map (v), rm3.unmap (rm3.map (v)));
160
175
}
161
176
fmt::print (" Mapping [0, 255] -> Inverted [1, -1]\n " );
177
+ fmt::print (" % value, mapped, unmapped\n " );
162
178
for (const auto &v : vals) {
163
- fmt::print (" {} -> {} -> {} \n " , v, rm4.map (v), rm4.unmap (rm4.map (v)));
179
+ fmt::print (" {}, {}, {} \n " , v, rm4.map (v), rm4.unmap (rm4.map (v)));
164
180
}
165
181
// ! [range_mapper example]
166
182
}
0 commit comments