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 o map() 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 que max, senão o comportamento não faz sentido.

Veja também

Quer aprender a usar isso em projetos reais, do zero?

Conhecer o Curso Maker