Projeto simples, defeito soft ou hard?

Olá, esse programa tem como objetivo girar o servo a 90° assim que o sensor de temperatura marcar 30°C ou mais, e voltar a 0° com 29°C ou menos. Fiz esse código usando um potenciômetro para simular o sensor de temperatura, mas acredito que não venha daí o meu problema.
O que percebi e o seguinte:
O código funciona bem, faz exatamente o que preciso porém, o servo tende a mexer, o movimento e mínimo, mas atrapalha e não é sempre, mas ele se repete na mesma frequência com o tempo do loop, o que me dá quase certeza que escrevi errado.
Alguém pode me dizer no que errei?

Segue o código:

#include <Servo.h>

int j = 0;

int i = 0;

Servo servo_3;

void setup()
{
pinMode(A0, INPUT);
servo_3.attach(3);

Serial.begin(9600);

}

void loop()
{
j = map(analogRead(A0), 0, 1023, 0, 100);
if (j > 30 && servo_3.read() <= 0) {
for (i = 0; i <= 90; i += 1) {
servo_3.write(i);
delay(25);
}
} else {
if (j < 30 && servo_3.read() >= 90) {
for (i = 90; i >= 0; i -= 1) {
servo_3.write(i);
delay(25);
}
}
}
Serial.print("Temperatura: ");
Serial.print(j);
Serial.println(“C.”);
delay(500);
Serial.print(“Servo em = “);
Serial.print(servo_3.read());
Serial.println(” graus”);
delay(1000);
}

servo (1).txt (677 Bytes)

O else no primeiro if não é preciso...

Vê também que é que retorna do servo_3.read para garantir que é o número que pretendes.