digitalWrite(dataB, grp == 0 ? 0 : 1);

ElEspanol:
das von dir gefragte

digitalWrite(dataB, grp== 0 ? 0 : 1;

ist nichts anderes als

digitalWrite(dataB, grp);

warum das so kompliziert geschrieben wurde, wer weiß das schon

Na so ganz stimmt das dann doch nicht, du gehst davon aus, dass grp nur die Werte 0 und 1 annehmen kann. Sauberer und universeller ist dann nur Sereniflys Methode.