Off-topic time again:
I remember trying out bones system back in the days in 3D studio max 2.5, but never really got it. In Blender, using bones doesn't seem to be any more straightforward either.
Rigging, or contacting the object(s) to bones or vice versa, and assigning IK (inverse kinematics) constraints when and where needed (like in some mechanisms to work as expected), is where I got totally lost.
In the meantime, this is as far as I got with bones:
No wonder that there are those (although only a few on Tube) who have looked for more easily approachable ways to get certain results by not using the bones system.
One such way is to use 'copy rotation/location'- and 'track to' constraints (not related to ones used with bones).
I've used the usual piston/piston rod/crankshaft combination - as it should have rather predictable behavior - to see how that works out, but stumbled on to one factor, that I never thought before - piston speed/velocity variation vs crankshaft rotation. Can't remember the exact search terms, but I looked on the net about it, and yes, it's a can of worms on its own, having plenty of equations to explain it.