My problem is that the motors strength drops as soon as I switch on more than one of them.
Do I need to rewire everything and connect transistors so that the motors don't directly connect to the pins or should I increase somehow the current that the battery produces?
You must never power a motor directly from an Arduino pin - firstly they are inductive loads
and can fry the pin with inductive voltage spikes, secondly each Arduino pin is rated at an absolutemaximum of 40mA. Various groups of Arduino pins are limited to 100mA in
total too. The chip is not a power source, its a source of control signals. Motors, even
those tiny ones take real power.
A small 9V battery can provide a total of about 20mA comfortably and 50mA in extremis.
Everything about you circuit is inadequate for powering those (or any) motors. A motor that
takes 80mA at 4.5V may take 100mA at 5V, so for all of them you need 0.5A at least, and 5
transistors+diodes to drive them. The ULN2803 is perhaps the simplest way to drive them,
has built-in free-wheel diodes and 8 channels each able to handle >>100mA without problem,
and will drop 5V down to about 4V which means the motors won't be over-driven either.
Thank you for your answer!
I will try to rebuild the circuit with the ULN2803.
(I initially went with the pins so that I could minimize the space the board needs.)
Wrong. pin 9 is connected to ground, pin 10 to the positive motor supply. Both are required. You should
have some extra decoupling really, but the decoupling on the Arduino 5V might be enough.
I'm sorry I don't understand why I need to connect Pin 10 to the positive and Pin 9 to ground?
Can you please elaborate on it? They are simple Pinouts, no?