I'm using the constrain on the b1 value, thus making sure it never leaves its range, I do not see how I'm discarding it.
You are discarding it, because constrain() returns a value, which you don't use, it does not operate on the parameter directly.
Read constrain() - Arduino Reference.
You could do:
b1 = constrain(b1, 0, 255);