Weak Arduino Output Pins
The Absolute Maximum is 40mA per pin, but you shouldn't go even close to that; max. 20mA per pin is about where you want to be. Total current (all pins) shouldn't exceed 200mA.
Only you know what current your &quot;fairly small&quot; motors pull, but you may have fried a few IO pins.
Also, you need flyback (or maybe bidirectional TVS) diodes and a few capacitors on your motors to keep noise and inductive kick-back away from your pins. Motor driver modules often have these installed, but your Arduino pins don't. Inductive kick-back can easily kill IO pins also.