Arduino Ramp Library. It allows the most customization, however requires external stepper