Scusa, forse sto dicendo una ca**ata, ma non potrebbe essere la Mega ad interrogare a turno i vari slave, invece di passare tutto il tempo ad aspettare la loro trasmissione ? ... tipo:
(master>slave1) "inizia trasmissione" (e poi si mette in ricezione, se entro, esempio, 5 secondi, non riceve nulla, riprova, dopo 3 tentativi senza ricevere nulla segnala allarme mancanza comunicazione con slave 1, cosi c'e' pure una segnalazione di possibile malfunzionamento)
(slave1) (dopo un secondo di pausa, per consentire al master di passare in ricezione senza problemi) trasmette una stringa composita con tutti i valori in sequenza, ad esempio, carattere inizio stringa (puo essere *), primo valore, separatore (puo essere |), secondo valore, fine stringa (puo essere #), per due volte di seguito (come controllo) ... se la stringa fosse di lunghezza fissa, sarebbe meglio (ad esempio, spedendo sempre i valori della temperatura come quantita' fisse di bytes, potrebbero bastare 5 caratteri per dato, positivo/negativo, prima cifra, seconda cifra, punto decimale, cifra decimale ... in questo modo una stringa completa sarebbe sempre di 13 bytes, e una trasmissione sempre di 26), perche' cosi il master non dovrebbe controllarle in tempo reale, basterebbe che le infilasse in ordine in un buffer da 26 caratteri (o in due da 13, per semplificare il controllo comparandoli), e che le controllasse dopo averle ricevute tutte ...
(master) mentre riceve piazza tutto in un buffer, al termine della ricezione controlla che le due meta' della stringa siano uguali, se no, la trasmissione e' errata e ripete il tutto (max 3 volte, poi segnala errore), se si, trasforma le parti "numeriche" della stringa in valori numerici, li elabora, ci fa quello che vuoi, poi svuota il buffer e passa a "slave 2" ... e cosi via ...
In questo modo saprebbe sempre quale slave sta rispondendo, e cosa gli sta mandando, controllerebbe per errori di comunicazione, e non dovrebbe tenere sempre una linea aperta in ricezione mentre fa il resto (l'interrogazione degli slave potrebbe farla anche ogni 5 secondi, tanto la temperatura ambiente non cambia piu di tanto velocemente) ... inoltre in questo modo gli slave potrebbero trasmettere "codici di errore" se necessario quando interrogati, al posto del valore di temperatura, ed il master potrebbe discriminarli (magari perche' cominciano con un carattere diverso) ed eseguire le opportune azioni ... o sbaglio e l'idea e' stupida ?