Man kann Variablen mit einem begrenzten Wertebereich erzeugen.
Ob dir das schmeckt, oder in deine Anwendung passt, überlasse ich ganz dir.
Aus meiner Wühlkiste:
template<typename Type, Type min, Type max>
class Begrenzt
{
static_assert(min<max,"min muss kleiner als max sein");
private:
Type value;
public:
Begrenzt(const Type value)
{
*this = value;
}
Type operator =(const Type value)
{
return this->value=value<min?min:(value>max?max:value);
}
operator Type() const
{
return value;
}
};
using MeineBegrenzteVariable = Begrenzt<byte,20,240>;
MeineBegrenzteVariable begrenzteVariable {42};
// Alternativ;
// Begrenzt<byte,20,240> begrenzteVariable = 42;
void setup()
{
Serial.begin(9600);
Serial.println(begrenzteVariable);
begrenzteVariable = 12;
Serial.println(begrenzteVariable);
begrenzteVariable = 250;
Serial.println(begrenzteVariable);
begrenzteVariable = 25;
Serial.println(begrenzteVariable);
Serial.println(begrenzteVariable+3);
Serial.println(begrenzteVariable = 244);
// Serial.println(begrenzteVariable = 4711); // warning: unsigned conversion from 'int' to 'unsigned char' changes value from '4711' to '103' [-Woverflow]
}
void loop() {}