2P2222 Transistor Switching

Not the whole story. A transistor with a nominal gain of 100 would have
Ib = Ic/10 or so when used as a switch.

As a switch transistors have to be driven hard into saturation (otherwise the
collector voltage won't drop enough toward the emitter). Normally you'd
use 1/10th to 1/20th of the collector current in the base to get to hard saturation.

This is important as the device heat dissipation is the current times this
voltage (called "Vce(sat)").

Put 6.5mA into the base and you might get 650mA from the collector (or
not, gains vary from device to device and fall off at higher collector currents),
but Vce might only drop to 1.5V, so the device dissipates 0.65 x 1.5 ~= 1W,
which will fry the transistor.

Giving 50mA into the base you'd get good saturation, so Vce= 0.1 or so, therefore
power dissipation is only 65mW, no heatsinking needed.

However this is too high a base current to drive direct from an Arduino
pin, where the absolute upper limit is 40mA.

In practice you'd use a MOSFET, much easier to drive.

There are better transistors available too, my favorite is ZTX851
which can switch 2A with Vce(sat) = 0.1V with only 40 mA base current,
but can handle 20A pulses even! Its datasheet has a chart for saturation
voltage for Ib = Ic/50.

Darlington transistors have oodles of gain and will definitely saturate
nicely, but alas waste 1 to 1.5V due to the circuit arrangement - easy to
drive from low current, but usually need heatsinking.