For my valentine.
Pull the heart handle to view the message, let go and it retracts back into the heart.
Requires 3/8" (9.525 mm) ribbon. In addition, my wife printed text on ink jet compatible heat transfer (iron on) paper to make the various messages, then ironed them onto the ribbon.
Video of prototype mechanism here: https://www.youtube.com/watch?v=4G4Cmofq4Kk.
Print "Back Enclosed.stl" and "Spring.stl" at 100% infill, the remaining parts at 20% infill.
I purchased 3/8" (9.525 mm) white ribbon and heat transfer paper for the messages, however, I wrote a couple of the ribbons by hand using an indelible ink pen.
I used cyanoacrylate glue to attach the ribbon to both "Handle.stl" and "Spool.stl". The location of the ribbon on "Spool.stl" was in the 7 o'clock position.
How I Designed This
In order to not over torque "Spring.stl", and knowing that I wanted the ribbon to be approximately 100mm in length, I needed to design "Spool.stl" to have a circumference of 100mm. Here comes the math:
Circumference = 2 * (pi) * radius,
which simplifies to
Circumference = (pi) * Diameter.
Filling in the desired circumference
100 = (pi) * Diameter
Diameter = 100 / (pi)
Diameter = 31.831
results in a diameter of 31.831. I rounded Diameter up to 32. Having a spool circumference of 100mm allows the ribbon to rotate the spool assembly 1 time during ribbon extension, which doesn't over torque the spring.
Finally, I designed "Back Enclosed.stl" and "Front.stl" to encapsulate the spool assembly.