O comportamento mantém-se se trocar a ordem da chamada das funções dentro da função loop()?
A mim parece-me que se diz:
quando eu desligo a função controlandoCasa() no loop, o código funciona bem
o problema será software e não hardware e estará relacionado com a função controlandoCasa() ou com alguma interferência entre esta e a função controlandoPortao().
Porque é que é que vai duas vezes à porta série dentro da função loop() ? Não podia ir só uma? E se arranjar forma de apenas processar a porta série 1 vez o problema mantém-se?