The floating pin
A pin your sketch has not set is not LOW. It is undriven, and its LED shows whatever it picks up — flickering under a fingertip, or glowing half-lit on its own. The back of the shield says so, and the fix is one line.
The sentence on the back
The underside of the shield carries one paragraph of advice, and it is the most useful thing printed on it:
By default, GPIO pins are in a floating state, so touching them with your finger can change their state and make the LED blink. To fix this, set the pinMode to output and specify HIGH or LOW.
"Floating" means nothing is holding the pin at any voltage. A GPIO that has not been set is an input with no pull resistor, and an input takes almost no current — so almost nothing is enough to move it.
What the inverter sees
Leave a pin alone and it drifts. Put a finger on it and it swings with the hum your body picks up from the wiring in the walls, fifty or sixty times a second, right through both the chip's LOW and HIGH limits. The LED flickers because the pin really is going HIGH and LOW.
Between those two limits is a band where the inverter does not promise an answer. The SN74HC04 on this board is a plain inverter with no hysteresis, so an input parked in that band can leave its output part-way, and the LED glowing at part brightness. A chip with hysteresis, such as a 74HC14, would snap to one side. This board uses the 74HC04, and the half-lit LED is the evidence.
The fix is one line per pin
Give every pin you use a definite state in setup():
pinMode(pin, OUTPUT)and adigitalWrite, for anything you drive.pinMode(pin, INPUT_PULLUP), for a button or switch to ground. The chip's own pull-up holds the pin HIGH until the button pulls it LOW.pinMode(pin, INPUT_PULLDOWN), for a switch to 3.3 V.
Pins you do not use can be left floating. Their LEDs will wander, and that is all they will do.
Before setup() runs
Every pin floats from the moment the board powers up until your sketch sets it — except six the ESP32-S3 holds itself. That is why a handful of LEDs are already steady while the rest shimmer, and it is the next page.
When it does not work
Those pins are floating. Your body picks up hum from the mains wiring around it, and an undriven input picks that up from you. Set each pin you use with pinMode — OUTPUT and a digitalWrite, or INPUT_PULLUP — and the flicker stops on those rows.
The pin has drifted to a voltage between LOW and HIGH, and the SN74HC04 behind the LED does not have to decide which it is. Its output sits part-way and the LED lights part-way. It is harmless, and it goes away the moment the pin is driven or pulled.
The same floating pin, now in your sketch as well as on the LED. A button that only connects the pin to ground needs a pull-up to hold it HIGH the rest of the time: pinMode(pin, INPUT_PULLUP) turns on the one inside the chip.
No. The ESP32-S3 input and the inverter input are both high-impedance, and neither is harmed by sitting at an in-between voltage. What it costs is a wrong reading if your sketch reads that pin, which is exactly what the LED is warning you about.
Which LEDs are lit before your sketch has run a line.
Lights that move on their own →Edit this page — content/books/esp32s3-base/the-floating-pin.mdx
Questions people ask first
Which way round does the ESP32-S3 go on the base?
Its USB sockets go over the two boxes printed USB, at the bottom of the base, with the antenna end at the top under the display connector.
Nothing stops the other way: the two sockets are identical, so the board seats just as firmly end for end. Put in backwards, its 3.3 V regulator output ends up wired to ground, and the board can be damaged for good. Seat the board first and plug the USB cable in second, every time.
Where does the power for my sensors come from?
The base has no regulator, no battery connector and no power input. It is powered through the ESP32-S3's own USB sockets, and every power way on it is one of that board's pins carried out.
The 3V3 ways are the output of the regulator on the ESP32-S3. The 5V ways are the board's 5V pin: about 4.6 V with a USB cable plugged in, and nothing without one. Nothing on the way is switched, fused or filtered.
Can I run a motor, relay or LED strip from the base?
Not from its power ways. Motors, relays, servos and long LED strips need their own supply, with its ground joined to a GND way on the base, because the ESP32-S3's regulator is small and is also running your sketch.
Small sensors and a display can take 3V3 and ground from the base. No current rating is quoted for the ways, because none has been checked.
How many GPIOs does the Pluggable Terminal Base bring out?
24 of the ESP32-S3 Gold's 36 GPIOs, once each, on two 12-way push-in blocks, plus two 4-way power blocks.
Twelve do not come out: 0, 1, 2, 3, 4, 35, 36, 37, 43, 44, 45 and 46, and the RST pin. GPIO 1, 2 and 4 reach the display connector and nothing else. All of the I²C and SPI pins are on the left block, and GPIO 19 and 20 (the native USB pair, on the right block) should be left alone while a sketch is using USB.
How many GPIOs does the Screw Terminal Base bring out?
26 of the ESP32-S3's GPIOs, once each, on two 15-way screw terminal blocks, with 3V3 on the left block and 5V on the right. Ten GPIOs do not come out.
The native USB pins (GPIO 19 and 20) are on the right block: a wire on either one shares the USB lines with the computer, so leave them alone unless the sketch is not using native USB.
Questions about this product
See what other owners have asked, and read their solutions.
This page covers several products. Choose yours to see the right discussions.
Discuss this article
Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.