The output of the neural network is always between 0.4 - 0.6.
...
(i1*W1 + i2 + W2 ... In * Wn)
... or maybe is it because you didn't put a bias to your nodes ?
(W0 + i1*W1 + i2*W2 ... In * Wn) , where W0 is a weight with the constant input 1.
A simple way to add a bias is to add a 1.0 component to the input vector