fixed printGroups() to use NUMPINS not NUMKEYS duh
wrote readGroups() from scratch and inserted it into checkSerial()