Sensor Infravermelho não funciona corretamente

Amigo tente usadar um delay logo após o recebimento.
O que acho que está ocorrendo é que estão chegando muitos valores ao mesmo tempo.
E quando vc abre o serial monitor ele tem que printar e durante isso da tempo de ler sem dar erro.

if (irrecv.decode(&results)) { //se o receptor IR recebeu um valor,...
delay(200); .....

Ou use uma varialvel para receber o valor do IRRECV e depois compare.