The purpose of my servo program was to provide a visualization for different types of numbers. In this case, numbers are divided into 3 different types, ‘happy’ (even numbers), ‘sad’ (odd numbers), and ‘special’ (numbers with special meaning like pi, and e). Each type of number has a different associated choreography. Happy numbers a received with a bouncing motion, followed by a series of accelerating claps. Conversely, sad numbers get a slow sweep and a series of ‘crawls’ back to the origin. Special numbers are explicitly spelled out by the position of the servo arm.

def happyMotor(initPause,numClaps):
    #Bounce
    ringing_move(servo, 90.0, duration=1.5)
    
    #Clap
    for i in range(numClaps):
        if i%2 == 0:
            servo.write(200.0)
        else:
            servo.write(0.0)
        clapPause = initPause/(i+1)
        time.sleep(clapPause)
    pass

def sadMotor(numDivs,initPause):
    #Initial Crawl
    linear_move(servo, 0, 200.0, speed=400)
    time.sleep(0.5)
    prevAng = 200
    #Sigh x amount of times
    for i in range(numDivs):
        ang = 200.0 - (i+1)*(200.0)/numDivs
        linear_move(servo, prevAng, ang, speed=400)
        sighPause = initPause*(i+1)
        time.sleep(sighPause)
        prevAng = ang
    pass

def drawNum(num,start,end):
    for c in num:
        digit = int(c)
        ang = digit*(end-start)/9
        servo.write(ang)
        time.sleep(0.5)

while True:
    servo.write(0.0)
    specialNums = {'pi','e'}
    num = input("Enter a number: ")
    
    while not num.isdigit() and num not in specialNums:
        num = input("Haha nice try, now give me a NUMBER: ")
        
    if num == 'pi':
        drawNum("31415926535",0,200)
    elif num == 'e':
        drawNum("271828",0,200)
    else:
        num = int(num)
        if num%2 == 0:
            happyMotor(1.0,15)
        else:
            sadMotor(3,0.8)