const int hallPin = 4; // Hall sensor connected to D2 const int ledPin1 = 2; const int ledPin2 = 1; const int ledPin3 = 0; const int ledPin4 = 3; // Built-in LED pin bool ledState = false; // Keep track of LED state bool lastHallState = HIGH; // Previous reading from Hall sensor void setup() { //Serial.begin(9600); // Start serial communication pinMode(hallPin, INPUT_PULLUP); // Use internal pull-up for Hall sensor pinMode(ledPin1, OUTPUT); // Set LED pin as output digitalWrite(ledPin1, LOW); pinMode(ledPin2, OUTPUT); // Set LED pin as output digitalWrite(ledPin2, LOW); pinMode(ledPin3, OUTPUT); // Set LED pin as output digitalWrite(ledPin3, LOW); pinMode(ledPin4, OUTPUT); // Set LED pin as output digitalWrite(ledPin4, LOW); // Start with LED off //Serial.println("Ready! Bring magnet close to toggle LED."); } void loop() { int hallStatus = digitalRead(hallPin); // Read Hall sensor // Detect falling edge: HIGH → LOW (magnet just got close) if (lastHallState == HIGH && hallStatus == LOW) { ledState = !ledState; // Toggle the LED state digitalWrite(ledPin1, ledState ? HIGH : LOW); digitalWrite(ledPin2, ledState ? HIGH : LOW); digitalWrite(ledPin3, ledState ? HIGH : LOW); digitalWrite(ledPin4, ledState ? HIGH : LOW); // Update the LED // Serial.print("Magnet Detected! LED "); //Serial.println(ledState ? "ON" : "OFF"); } lastHallState = hallStatus; // Update the previous Hall sensor state delay(50); // Debounce delay }