const int RIGHT_SENSOR_PIN = A2; const int LEFT_SENSOR_PIN = A1; const int RIGHT_LED_PIN = 8; const int MIDDLE_LED_PIN = 9; const int LEFT_LED_PIN = 10; const int NOISE_THRESHOLD = 50; // min value to count as detection const int LED_TRIGGER_DIFFERENCE = 100; //min value to trigger led int leftQuiescentValue = 0; //using to calibrate int rightQuiescentValue = 0; void setup() { Serial.begin(9600); pinMode(RIGHT_LED_PIN, OUTPUT); pinMode(MIDDLE_LED_PIN, OUTPUT); pinMode(LEFT_LED_PIN, OUTPUT); // this is to calibrate the sensors: 100 readings and averaged for baseline. long leftSum = 0; long rightSum = 0; for (int i = 0; i < 100; i++) { leftSum += analogRead(LEFT_SENSOR_PIN); rightSum += analogRead(RIGHT_SENSOR_PIN); delay(5); } leftQuiescentValue = leftSum / 100; rightQuiescentValue = rightSum / 100; Serial.print("Left Quiescent: "); Serial.print(leftQuiescentValue); Serial.print(" | Right Quiescent: "); Serial.println(rightQuiescentValue); } void loop() { int leftValue = analogRead(LEFT_SENSOR_PIN); int rightValue = analogRead(RIGHT_SENSOR_PIN); int leftStrength = abs(leftValue - leftQuiescentValue); // ignores orientation (N-S) int rightStrength = abs(rightValue - rightQuiescentValue); // logic for turning on / off LEDs // both off if (leftStrength < NOISE_THRESHOLD && rightStrength < NOISE_THRESHOLD) { digitalWrite(RIGHT_LED_PIN, LOW); digitalWrite(MIDDLE_LED_PIN, LOW); digitalWrite(LEFT_LED_PIN, LOW); } // right stronger else if (rightStrength > (leftStrength + LED_TRIGGER_DIFFERENCE)) { digitalWrite(RIGHT_LED_PIN, HIGH); // Right ON digitalWrite(MIDDLE_LED_PIN, LOW); digitalWrite(LEFT_LED_PIN, LOW); } // left stronger else if (leftStrength > (rightStrength + LED_TRIGGER_DIFFERENCE)) { digitalWrite(LEFT_LED_PIN, HIGH); // Left ON digitalWrite(RIGHT_LED_PIN, LOW); digitalWrite(MIDDLE_LED_PIN, LOW); } // both detected else { digitalWrite(MIDDLE_LED_PIN, HIGH); // Middle ON digitalWrite(RIGHT_LED_PIN, LOW); digitalWrite(LEFT_LED_PIN, LOW); } Serial.print("L_Str: "); Serial.print(leftValue); Serial.print(" | R_Str: "); Serial.println(rightValue); delay(50); }