Nezmiňuješ se, jak rychle potřebuješ magnet detekovat, ani nevím, jestli máš senzor správně zapojený.
V každém případě tvůj program nemůže dost dobře fungovat, protože většinu času je blokován příkazem delay(). Vhodné by bylo použít přerušení.
Netuším, k čemu to má sloužit, ale na vyzkoušení třeba velmi jednoduše bez přerušení takhle:
Kód: Vybrat vše
const int hallSensor = 2;
void setup() {
  Serial.begin(115200);
  pinMode(hallSensor, INPUT);
  digitalWrite(hallSensor, HIGH);
  Serial.println("Start");
}
void loop() {
  if (digitalRead(hallSensor) == LOW) {
    Serial.println("ON");
    Serial.flush ();
  } else {
    Serial.println("OFF");
    Serial.flush ();
  }
}
Tenhle prográmek čte senzor ASAP.