Impressionante a maneira que está implementando o firmware! Genial! Gostei muito dessa ideia de registradores. Com relação ao esquemático, realizei alguns testes e creio que talvez não seja necessário utilizar o BC para realizar a inversão do sinal. Testei a base do TIP polarizada utilizando emissor do optoacoplador e performou bem. Reduziria mais ainda a complexidade da montagem. Fiquei um pouco preocupado com o diodo em série com o conector, uma vez que vai circular uma corrente considerável por ele, talvez seja necessário utilizar um diodo mais resistente, ou utilizá-lo em anti paralelo com o conector. Assim ao ligar a fonte de maneira invertida, haveria uma queda de tensão somente do diodo, protegendo o circuito (e causando um curto do lado da fonte, mas que provavelmente terá uma proteção contra curto na saída).
Obrigado pelo comentário. Sobre usar o BC para inverter o sinal. Você pode polarizar o TIP direto pelo emissor do opto e assim o "sentido" do acionamento fica certo, ou seja, não fica invertido. Mas, nesse caso, como que você faz para polarizar a base do TIP com 7,5V? Se puder, manda para o e-mail do canal um esboço do circuito, ou faz ele no Falstad e posta aqui o export em texto do circuito. Sobre usar o diodo em antiparalelo, fica ruim, pois ao ligar o circuito com Vcc invertido queimaria esse diodo (se a fonte não tiver limitação de corrente). Note que, no máximo, cada aquecedor consome 300 mA e o ventilador cerca de 200 mA. Logo, com tudo no máximo (que já é uma situação atípica) o consumo é 800 mA, dentro das especificações do 1N4007.
No arquivo "communication.cpp" acredito que, por volta da linha 46, aonde está escrito "answer[6] = highByte(heater2Temp);" o correto seria "answer[6] = lowByte(heater2Temp);" - ( trocando o highByte por lowByte)