constrain()
constrain(x, min, max)
O constrain() é o seu segurança de faixa: ele garante que um número fique entre um mínimo e um máximo. Se o valor estourar pra cima, ele vira o máximo; se cair demais, vira o mínimo; e se estiver dentro, passa sem mexer. Ótimo pra proteger, por exemplo, um valor de PWM que só pode ir de 0 a 255.
Sintaxe
constrain(x, min, max);
Parâmetros
- x: o valor a ser limitado.
- min: o piso da faixa (menor valor permitido).
- max: o teto da faixa (maior valor permitido).
Retorno
x se ele estiver dentro da faixa; min se for menor; max se for maior.
Exemplo
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
int leitura = analogRead(A0); // 0 a 1023
int pwm = leitura / 4; // aproxima pra 0..255
pwm = constrain(pwm, 0, 255); // garante a faixa do PWM
analogWrite(9, pwm);
}
Notas e cuidados
- Muito usado logo depois do
map(), porque omap()não limita a saída — se a entrada sair da faixa esperada, o resultado também sai. - É uma macro: evite efeitos colaterais nos argumentos (nada de
constrain(x++, 0, 10)). - Certifique-se de que
miné realmente menor quemax, senão o comportamento não faz sentido.