The motors will pull bigger stall currents, use MOSFETs for them, not BJTs, if the stall current is more than
about 1A.
If driving from 3.3V logic you'll need to search for devices with 3.3V gate drive - perhaps use
parametric search at your favorite electronics supplier's website?
Inductive loads indeed always need those free-wheel diodes, else bang goes your circuit...
Without knowing any details of your circuit I can't say if BJTs are going to work for the solenoids.
You need a good solid output current level for that (5V ATmega based Arduinos can deliver,
many lesser devices cannot - for instant the Due would not be able).
For a BJT in switching application you need between 5% and 10% of the collector load current
to the base, otherwise the device won't be fully saturated and getting warm.
If you find interesting and / or appropriate to use optocouplers, to avoid conducting noise or spikes, it may be interesting to know the 6N137 and the HCPL3120.
It may be possible to use a current limiter for the motor, so it may be possible to use a transistor and a lower power supply.
Hi Thanks for this, I was mainly struggling with the calculation and the concept of why so many bjts exist.
I think MarkT makes a good point, and that I should instead be using a MOSFET.
Would a MOSFET need a gate resistor and/or a flywheel diode? they seem much easier to work (and probably more suitable) as switches for this sort of application?