Customer:
I purchased several Digital Hall Effect Sensors for an Arduino project and didn’t realize they are NC rather than NO. I have two questions:
-
If I connect 36 of these to Arduino digital pins as inputs, with typical usage having at most two magnets at a time (meaning 34-36 sensors will be closed), do I need to worry about current flow through all the pins? I don’t want to damage the Arduino.
-
If having this many closed at once is a problem, would it be reasonable to add a transistor triggered by the output line on each sensor to make them normally open? Do you have any suggestions for this or other ways to make these behave as NO?
Originally submitted via email support on 5 September 2025. Migrated to the forum for community visibility.
Customer:
I’m building a 6x6 grid of LED+sensor pairs for a hand-quickness training device. The project uses 36 little LED+sensor modules connected to an Arduino Mega. With just two modules the electronics work great, but before I construct the remaining 34 modules, I wanted to verify whether I should add something to change the sensors from NC to NO to avoid potentially damaging the Arduino. The concern is whether NC with 34-36 pins on would stress the board more than NO with 0-2 pins on.
Soldered Support:
There should be no problem connecting all 36 sensors to the Arduino board. The current required by each sensor is about 0.4 µA (36 × 0.4 = 14 µA for all connected sensors). Even when all sensors detect a magnet, the maximum current value would be around 18mA (with an internal 10kOhm PULL-UP resistor to the Arduino), which is still in the acceptable range.
If you are using the Hall Effect Sensor library, when declaring the sensor object, the pin is set to use the internal PULL UP, which sets the pin to HIGH when no magnet is present and LOW when magnet is detected. In the getReading() function this value is inverted so it outputs 0 when no magnet is detected and 1 when detected. Use PULL UP on the OUT pin to fix the value when there is no detection.
You can handle the NO/NC behavior entirely in software, as it doesn’t matter to the Arduino if the signal goes from low to high or high to low—you can write your code to act accordingly to how you want the sensors to behave. You can use the getReading() function from the library or simply use digitalRead() to get the state of the output pin.