I've been struggling with an issue on a couple of different Nano BLE boards. digitalRead() always returns HIGH no matter what voltage the input pin reads via DMM.
I connected pin 4 to pin 14 (GND) via a 4.7KO resistor but digitalRead kept reporting HIGH. I also jumpered 4 to 14 directly with the same results. Occasionally, I do get a LOW reading, but it is short lived (reported only for a few seconds) before going back to HIGH. That happens fairly rarely when I handle the clips that attach to the two pins.
I eliminated all extra stuff I could. I have a clip with one end on 4, the other on 14. No breadboard.
I also tried pin 28 with the same results.
Everything I read online about this issue had to do with the OP floating the pin and expecting a LOW. I am GROUNDING it. I am sure I am missing something obvious.
Arduino pin numbers (the values you pass to digitalRead etc) are not necessarily the same as package
pin numbers, although most Arduinos have the Arduino pin numbers silk-screened onto the PCB to
help with this.
Pin 14 being ground implies you are using package pin numbers, since the Arduino pins are all
signal inputs and outputs.
Pin 4 on the package is unlikely to be the same as Arduino pin 4.
The Arduino pin numbers are marked on the silkscreen on the bottom of the Nano 33 BLE board. You won't be able to see them if you have the board on a breadboard, but you can use the pinout from the product page: https://store.arduino.cc/usa/nano-33-ble