digitalWrite(dataB, !!grp);
Sogar das ist unnötig:
void digitalWrite(uint8_t pin, uint8_t val)
{
...
if (val == LOW) {
*out &= ~bit;
} else {
*out |= bit;
}
...
}
Also alles ungleich 0 wird als wahr interpretiert. Damit kann man übergeben was man will